2017-10-25 10 views
0

私はNode.jsサーバー上でアプリケーションを実行しています。 CORSは有効になっていますが、POST要求が拒否されています(400, not allowed)。Originにポート番号が含まれているとCORSは許可されません

POSTMANを使用して同じリクエストを送信する場合は、Originからポート番号を削除するだけで問題なく動作します。しかし、要求と送信元の両方のポートが同じであるため、正しく動作するはずです。

これは動作しません:

# Request 
Request URL: http://the_address:the_port/etc 
Request Method: POST 

# Headers 
Origin: http://the_address:the_port 

これは完全に正常に動作している間:

# Headers 
Origin: http://the_address 

あなたは、これが壊れた理由のアイデアを持っていますか?同じポートである限り、ポートがOriginにある場合でもCORSは同じ発信元要求を許可しませんか?

PS:webpackとReactも使用していますが、私は間違っていない限り関連しているとは思っていません。

+1

ブラウザが送信する 'Origin'ヘッダを手動で変更することはできません。ブラウザは、リクエストを送信しているフロントエンドのJavaScriptコードの実際の起点となるものに基づいて送信する 'Origin'ヘッダーを設定します。したがって、あなたのコードがリクエストを送信しているURLの起点が、ブラウザが送信する 'Origin'ヘッダの値とまったく同じでない場合、ブラウザは原点交差要求を考慮します。 – sideshowbarker

+1

フロントエンドJavaScriptコードの実際の起点を 'http:// the_address:the_port'から' http:// the_address'に変更する唯一の方法は、 'http:// the_address'からフロントエンドJavaScriptコードを実際に提供することです。そのポート番号としてポート80以外の何かを持つ 'http:// the_address:the_port'からではなく、ポート番号としてポート80を持ちます。 – sideshowbarker

+0

は完全なCORSエラーを表示します。 – Scriptonomy

答えて

0

ブラウザが送信するOriginヘッダーを手動で変更することはできません。ブラウザは、リクエストを送信しているフロントエンドJavaScriptコードの実際の起点となっているものに基づいて送信するOriginヘッダーを設定します。したがって、コードが要求を送信しているURLの起点が、ブラウザが送信するOriginヘッダーの値とまったく同じでない場合、ブラウザは原点通過の要求を考慮します。

http://the_address:the_portからhttp://the_addressにあなたのフロントエンドのコードの実際の原点を変更する唯一の方法は、実際にそのポートとして80以外の何かを持っている代わりにhttp://the_address:the_portからの、そのポートとして80を有するhttp://the_addressからのコードを、提供することです数。

関連する問題