Same-origin policy とは?
状態:-
閲覧数:1,300
投稿日:2018-01-30
更新日:2018-01-31
日本語表記
・同一オリジンポリシー
Webセキュリティにおける重要な仕組み
・Webブラウザに導入されたセキュリティ上の考え方
「あるオリジンから読み込まれた文書やスクリプト」について、「そのリソース」から「他のオリジンのリソース」にアクセスできないように制限するもの
・悪意ある行動を起こしかねないリソースの分離を目的としてしている
これらの API を使用する Web アプリケーションは、 CORS ヘッダーを使用しない限り、アプリケーションが読み込まれたのと同じドメインからしかリソースを HTTP でリクエストできない
・XMLHttpRequest
・Fetch API
・同一オリジンポリシー
Webセキュリティにおける重要な仕組み
・Webブラウザに導入されたセキュリティ上の考え方
「あるオリジンから読み込まれた文書やスクリプト」について、「そのリソース」から「他のオリジンのリソース」にアクセスできないように制限するもの
・悪意ある行動を起こしかねないリソースの分離を目的としてしている
Same-origin policy が適用されるAPI
これらの API を使用する Web アプリケーションは、 CORS ヘッダーを使用しない限り、アプリケーションが読み込まれたのと同じドメインからしかリソースを HTTP でリクエストできない
・XMLHttpRequest
・Fetch API
URL / オリジンとは? / Cross Originとは?
URL
プロトコル://ホスト:TCP ポート/パス
http://programming-term.w4c.work:80/programming/status/211
オリジンとは?
英語表記
・Origin
生成元
・自身のリソースが格納されている場所
・「プロトコル、ホスト、ポート番号」の3つを合わせたもの
「プロトコル://ホスト:ポート」で生成元を比較
・パスは含まれない
「プロトコル://ホスト:ポート」全てが等しい
→ 「Same Origin」と看做される
Cross Originとは?
「スキーム/ホスト/ポート」何れかが異なる
→ 同一ドメイン(ホストの別名)でも、スキームもしくはポートが 異なれば 「Cross Origin」と看做される
「Cross Origin」と看做されるとどうなるの?
・異なるOriginのデータを取得しようとすると、同一生成元ポリシーのためエラーが発生
→ 異なるオリジンに格納されているデータは、読み取ることが出来ない
Cross-OriginでAjax通信をするためには?
・サーバー側の設定が必要
「Cross-Origin」と「クロスドメイン」の違い
同一生成元ポリシー
・uri-scheme, uri-host, uri-port で生成元を比較するので同一ドメインでも異なるポリシーとして判断される場合がある
・スキーム(HTTP/HTTPSなど)やポート番号が異なる場合、仮にドメインが同じ(クロスドメインではない)でも、同一生成元ではないので制約がかかる
一覧
・uri-scheme, uri-host, uri-port で生成元を比較するので同一ドメインでも異なるポリシーとして判断される場合がある
・スキーム(HTTP/HTTPSなど)やポート番号が異なる場合、仮にドメインが同じ(クロスドメインではない)でも、同一生成元ではないので制約がかかる
一覧
- | - | 内容 | オリジン | ドメイン |
---|---|---|---|---|
http | https | スキーム相違 | Crossオリジン | これだけでは判断できない |
http://javascript.w4c.work | https//javascript.w4c.work | スキーム相違 | Crossオリジン | Sameドメイン |
javascript.w4c.work | javascript.w4c.work:80 | ポート番号省略 | これだけでは判断できない | Sameドメイン |
javascript.w4c.work | javascript.w4c.work:1 | ポート番号相違 | Crossオリジン | Sameドメイン |
Same-origin policy に違反するとどうなるの?
Same-origin policy に違反するとどうなるの?
XMLHttpRequest
・受信に失敗
Web フォント
・ダウンロードに失敗
Link
仕様
The Web Origin Concept
・RFC 6454
・日本語訳
・日本語訳
MDN
・同一オリジンポリシー
・Same-origin policy
エラー
・Cross-origin image load denied by Cross-Origin Resource Sharing policy.