1

データハンドラからタブ区切り形式でデータをダウンロードしようとしているプロジェクトがありますが、Google ChromeはOriginヘッダー値にnull値を送信しています。D3リクエストでOriginヘッダーnull null

私はhttp://server.corp.somebiz.com/reportpages/Report_Page_Requests_Over_Time.aspx?app=76ac42b7-ba6f-4be4-b297-758ebc9fe615ここ

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ヘッダーが完全に表示されません。

+0

[Origin-nullはAccess-Control-Allow-Originによって許可されていません]の複製が可能です(https://stackoverflow.com/questions/8456538/origin-null-is-not-allowed-by-access-control-許可元) –

+0

'file://' URLからコードを実行していますか?それがこの問題を引き起こします。その場合は、少なくとも代わりにローカルサーバーで実行する必要があります。 –

+0

いいえ、URLでfile://を使用していません。データ・ハンドラーは、データベースから動的にデータをプルするストアード・プロシージャーに基づいて、HTTP GETを介して要求をオンザフライで構築します。 (私は可能な重複した質問も見ましたが、それは当てはまりません) – amber

答えて

1

iframeあなたが呼び出しページをロードしているが値allow-same-originが含まれていない​​属性、browsers give it a “unique” origin持っている場合:[​​]属性が設定されている場合

、内容は以下のように扱われますフォーム、スクリプト、および様々な潜在的に厄介なAPIが無効にされ、リンクが他のブラウジングコンテキストをターゲットとすることが防止され、プラグインが保護されます。 allow-same-originキーワードは、その実際の起源からのものの代わりにユニークな起源

にそれを強制するように処理されるべきコンテンツを引き起こし...、クロスオリジンリクエストで送信するOriginヘッダの値を決定する際に、ブラウザはシリアライズユニークな起点はnullとなり、値はOriginとなります。

関連する問題