別ドメインへのリクエストが禁止されている理由(未解決)
①XMLHttpRequest オブジェクトを使った方法では、別ドメインにリクエストできない。
②script 要素を使った方法だと、別ドメインでもリクエストできる。
var request = new XMLHttpRequest(); request.open("GET", "http://other.com/age?name=honemoni", true); request.send(null); // リクエストできない var script = document.createElement("script"); script.src = "http://other.com/age?name=honemoni"; document.body.appendChild(script); // リクエストできる
なぜ①は駄目で②は許されるのか。
この2つを比較してみて①の理由を知ろうというのが今回の目的です。
この2つの違いがわかったような気がするので、それを書いてみます。
2つの違いは、返ってきた文字列が解析されるかどうかだと思います。
①の方法は、返ってきた文字列はそのまま responseText プロパティに入れられます。文字列は解析されません。
しかし②の方法では、返ってきた文字列は JavaScript のソースコードとして解析されます。解析される前にソースコードを書き換えることは、おそらくできません。
でもこれは、別ドメインへのリクエストを禁止する理由にはなっていないような…。
…ちょっとわからないので、また暇なときに考えてみます。