本番ビルドを作成したReactJSアプリケーションがあり、ビルドフォルダーを/ var / www / html /内に配置しました(これが正しいデプロイ方法だと思います)。
このReactJSアプリケーションからCORSをサポートしないAPIを呼び出しています。ApacheでCORSを許可することについての投稿や質問がたくさん見つかりましたが、それが私が探しているものであるかどうかはわかりません。私は運が悪かったのでこれらの投稿をフォローしました。これらのガイドは、着信ではなく発信応答にCORSを追加するためのものだと思いますか?
とにかく、私が/etc/apache2/apache2.confに追加したのは次のとおりです。
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
これらを下に追加しました <Directory /var/www/html>
上記の4行を.htaccessinsideに追加してみました /var/www/html/
再び成功しません。
私はAPIサーバーを変更する方法がなく、ミドルpythonフラスコアプリケーションを使用してヘッダーを変更することにすでに成功していることを述べたいと思います。ただし、そのpythonアプリを削除し、このタスクにApacheを使用する必要があります。
apacheを使用して、apacheがデプロイされているサーバーへの着信応答を変更してcorsを有効にすることはできますか?はいの場合、私はここで何が欠けていますか?
このガイドに従うことで解決策に到達しました。どうやら、apacheは着信応答をインターセプトしてヘッダーを追加することはできません。もちろん、これは私の知る限りです。それができることは、リバースプロキシとして機能することです。
リバースプロキシはこのように機能します。私のアプリは、たとえばApache "/ api"で定義されたURLにHTTPリクエストを送信する必要があります。また、apache構成内で、「/ api」の場所を定義して、必要なサーバーURLにリクエストをリダイレクトします。次に、apacheを使用してヘッダーを追加します。このサーバーは、サーバーからの応答を受信すると、ヘッダーを追加して、corsenableヘッダーを使用して応答を返します。私がApacheで使用したコードは次のとおりです。
<LocationMatch "/api">
ProxyPass http://remote-server.com:8000/api/
Header add "Access-Control-Allow-Origin" "*"
</LocationMatch>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加