xmlhttprequest onloadが呼ばれずonerrorしか呼ばれない

投稿者: Anonymous

xmlhttprequestを使ってみようと思い以下のようなコードを書いたのですが、
onloadが実行されず必ずonerrorが呼び出されます。
どうすればonloadが呼び出されるでしょうか

<html>
<head>
<script>
function fn()
{
    alert("RUN!");
    var xhr = new XMLHttpRequest();
    var url="http://www.yahoo.co.jp";

    xhr.open("GET", url, true);

    xhr.onload = function (oEvent) {
        alert("on load");
    };

    xhr.onerror=function(oEvent){
        alert("on error");
    }
    xhr.send(null);
};
</script>
</head>

<body>
<button type="button" name="btn" onclick="fn()">ボタン</button>
</body>

</html>

解決

あるWebサイトから別の悪意のあるWebサイトの情報を読み込んで実行させないための仕組みとしてSame-Origin Policy(同一生成元ポリシー)というのがブラウザ、Yahoo!Japanで適応されているため、xhrfetchで情報を取得することが出来ません。

もしYahoo!JapanのWebサイトの内容を読み込んでこのJSのonloadのほうを実行させるためにはYahoo!Japanのサーバー側で貴方のドメインからの読み込みを可能に(CORS対応)してもらう必要があります。

CORS(Cross Origin Resource Sharing)に関しては以下を見るとわかりやすいと思います。
https://qiita.com/tomoyukilabs/items/81698edd5812ff6acb34

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *