generated at
Web resourceから別のWeb resourceに対する操作



以下の3つに大別される
reads
writes
embeds


Same-Origin PolicyCORSを考える際は、この3つのそれぞれで、
Same-Origin、Cross-Originでの挙動の差異
CORSを適用する前後での挙動の差異
を見るとわかりやすいmrsekut



tl;dr
_
Same-Origin (SOPあり)Cross-Origin (SOPあり)Cross-Origin & CORS
readsのsimple req制限しないほぼ禁止Access-Control-Allow-Originを使えばできる
readsのnot simple req制限しないほぼ禁止Preflight Requestを使えばできる??
writesのsimple req制限しない制限しない→元からできるので関係ない
writesのnot simple req制限しない禁止Preflight Requestを使えばできる
embeds制限しない制限しない→元からできるので関係ない
「Cross-Origin (SOPあり)」の列が
「制限しない」になっているものがSOPが適用されないものになるmrsekut
それ以外のものがSOPが適用されるものになるmrsekut
writesのsimple reqのCross-Originの部分が「制限しない」になっているので、
readsのnot simple reqに ?? を付けているのは、writesの話とごっちゃになっている可能性があるからmrsekut
writeを抜きにして、readを調べる方法がわからない
また、cross-originのiframeの内容をwindow経由で見ることはできない




reads
resourceの読み込みを指す
SOPが適用されるため、Cross Originなresourceにはアクセスできない
例えば、
fetch API経由でresponseを受け取る
window を経由したDOM操作
例えば、iframeで読み込まれているものを window.contentDocument で読む
CORSをしたときはどうなる #??
fetchの方がわからん #??
iframeの方はいずれにしろ無理
つまり「reads」の中にも分岐がある #??



writes
networkを経由した書き込み
requestを送ることはできるが、responseを読むことはできない
resuponseはCross-Origin readsに該当するため
SOPは、Simple Request以外の時にのみ適用される
Simple Request以外のときは、Cross Originにrequestを送れない
Simple Requestの場合はSOPの有無に関わらず送ることができる
例えば、Simple Requestでの例
<a> などのリンク
リダイレクト
<form> の送信
Fetch APIによるrequestの発行
例えば、Simple Request以外での例
Fetch APIによる(Simple Requstの条件を満たしていない)requestの発行





embeds
Simple Requestをして得たものを画面に描画する
SOPの有無に関わらず、simple requestの脆弱性対策はserver側で為されているはずであるという前提があるので、Same OriginかCross Originかどうかに関わらず、制限はない
つまり、defaultで許可されている
だから、SOPの有無や、CORSの有無を考える際にembedsは考慮しないで良いmrsekut
例えば
<script> で、scriptを読み込む
<link> で、CSSを読み込む
<img> で、画像が表示
<video> <audio> でmedia fileを再生
<object> <embed> での埋め込み
<iframe> での埋め込み
X-Frame-Optionsを使用するなどの例外はある






参考