データハンドラからタブ区切り形式でデータをダウンロードしようとしているプロジェクトがありますが、Google ChromeはOriginヘッダー値にnull値を送信しています。D3リクエストでOriginヘッダーnull null
var url = 'http://server.corp.somebiz.com/DataHandlers/ReportSets.ashx?task=pagerequestsovertime&app=188d1956-c4a7-42f7-9bdd-38f54c14e125&format=tsv';
d3.tsv(url, function (d) {
d.date = parseTime(d.date);
d.close = +d.close;
return d;
}, function (error, data) {
if (error) throw error;
console.log('Do stuff');
});
に移動したときに、私はこれを見ているが、要求の生のヘッダは以下のとおりです。
GET /DataHandlers/ReportSets.ashx?task=pagerequestsovertime&app=786b5ef3-1389-4890-8004-533fd1f66f16&format=tsv HTTP/1.1
Host: server.corp.somebiz.com
Connection: keep-alive
accept: text/tab-separated-values,*/*
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
これは、コンソール上のエラーで終了します。
XMLHttpRequest cannot load http://server.corp.somebiz.com/DataHandlers/ReportSets.ashx?task=pagere…6ac42b7-ba6f-4be4-b297-758ebc9fe615&start=2/1/2017&end=3/2/2017&format=tsv. The 'Access-Control-Allow-Origin' header has a value 'http://server.corp.somebiz.com' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
私はなぜこれが起こっているのか探しているだけでなく、条件は何ですか? Chromeへの広告は、ヌルのOriginヘッダーをサーバーに送信します。
これは、Internet Explorer 11が正しいOrigin値をサーバーに送信しているため、Chrome固有の問題のようです。
更新:もう一つのしわを追加するには、それが原因かもしれません。
私は、呼び出したページを要素にロードして、スクリプト化された要素を分離します。 iframeの外でページを呼び出すと、動作が異なるため、ChromeのOriginヘッダーが完全に表示されません。
[Origin-nullはAccess-Control-Allow-Originによって許可されていません]の複製が可能です(https://stackoverflow.com/questions/8456538/origin-null-is-not-allowed-by-access-control-許可元) –
'file://' URLからコードを実行していますか?それがこの問題を引き起こします。その場合は、少なくとも代わりにローカルサーバーで実行する必要があります。 –
いいえ、URLでfile://を使用していません。データ・ハンドラーは、データベースから動的にデータをプルするストアード・プロシージャーに基づいて、HTTP GETを介して要求をオンザフライで構築します。 (私は可能な重複した質問も見ましたが、それは当てはまりません) – amber