問題は、スクリプトがページ上にあり、通常はネットからフェッチされている場合に機能しますが、プラグインの一部としてコードがユーザースクリプトにある場合、Access-Control-Allow-Origin: *
ヘッダーがあることを突然忘れて、クロスドメインリクエストへの応答を停止することです.
これを示すコードを次に示します。
// ==UserScript==
// @include *nasa.gov*
// ==/UserScript==
var xhr = new window.XMLHttpRequest();
xhr.onreadystatechange = function () {
alert('state changed: ' + this.readyState + "\nstatus: " + this.status);
};
xhr.onload = function(){
alert('document loaded');
};
xhr.open('GET','http://apod.nasa.gov');
xhr.send(null);
最新の Web サイトの白黒がないため、apod サイトを選択したので、イベントをフィルター処理する必要はありません。
そして、この状態では機能しますが、このURLをすべてのサイトからの呼び出しを受け入れるサーバーに向けると、allow-originヘッダーが無視されます...
わかりました、それはバグですか、それともここで何か間違っていますか? そこに行っても大丈夫であることを「保証」するためのリクエストオブジェクトのオプションかもしれませんか?私は好きxhr.allowcrossdomainaccess = true
か何かを知りませんか?