Simple Requestの基準の理由
なぜSimple Requestが、このような基準なのか
結論
もっと雑に言えば、「 <form>
で送信できるもの」がSimple Requestの基準になっている
時代の流れとしては、
SOPがない→SOPが入る→CORSが入る
という順序を踏んでいる
ここで、SOPが追加された直後のことを考えると
例えば、formの送信はSOPが適用されない
ということは、formの送信に関しては、server側でセキュリティ対策が施されているべきである
また、SOPが入ったということは、
そもそもcross-originからPUTやDELETEが飛んでくることはない、となる
だから、ここに関してセキュリティ対策をしなくても安全である
この状態で、CORSが追加される
すると、POSTだけでなく、PUTやDELETEもcross originから飛んできうることになる
POSTなどに対しては、既にセキュリティ対策が為されているが、
PUTやDELETEに対しては対策されていない
つまり、
ここで線引きが必要になる
もし、この状況下で(preflight requestのない)CORSが追加されると、
Cross OriginからPUTやDELETEが飛んできて、CSRF攻撃を受けてしまう
responseは関係なく、requestでCSRF攻撃は完了できる

これは非常にまずく、server側が新たに対策を実装する必要が出てくる
不要なRTTは避けたいし、そもそもセキュリティ対策されているはず(前提)
だから、含めなかったのかな

参考