リバースプロキシのREST APIでAccess-Control-Allow-Originエラー

“No ‘Access-Control-Allow-Origin’ header is present on the requested resource”エラーが発生した場合は、クライアントサイドの問題ではなくサーバーサイドの問題。
具体的にはXSS対策でサーバーサイドは標準では外部からのアクセスを拒否するようになっているみたい。

エラーの文言通り、Access-Control-Allow-Originと言うプロパティを有効にするのだが、使用しているサーバーはDockerを使って複数のサービスを提供している。
具体的にはこんな感じ。

その内の一つをREST APIとして試験運用使用と思いphpで軽く作ってみたらハマったので。

正しい設定

プロキシサーバのnginxの設定はproxy_set_headerを使用する

プロキシ先?はapacheだったので.htaccessを有効(AllowOverride All)にしている状態で.htaccessに

駄目だった設定例

nginx設定 apache設定 error
add_header Access-Control-Allow-Origin *; なし “No 'Access-Control-Allow-Origin' header is present on the requested resource”
なし Header set Access-Control-Allow-Origin * “No 'Access-Control-Allow-Origin' header is present on the requested resource”
add_header Access-Control-Allow-Origin *; Header set Access-Control-Allow-Origin * “The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed”
スポンサーリンク
レタリング(大)広告
レタリング(大)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レタリング(大)広告