web-dev-qa-db-ja.com

HTTPPOSTリクエストをリダイレクトする方法

こんにちは私は現在、Apache httpd.confファイルで以下のコードを使用してHTTPからHTTPSにリダイレクトしています

<VirtualHost 10.1.2.91:80>
Redirect 302 /GladQE/link https://glad-test.com/GladQE/link.do
Redirect 302 /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do
</VirtualHost>

これにより、パラメータはgetリクエストからリダイレクトされますが、postからはリダイレクトされません。ここを読んでみると、これはmod_rewriteを使用して行う必要があるようです。

誰かが私が行う必要のある修正を手伝ってくれるでしょうか。そうすれば、post paramsを使用して左側のリンクがヒットしたときに、paramsをそのままにして右側のリンクにリダイレクトされます。

どうもありがとう

トム

1
shawsy

Apache構成のように見えますか?そのようなものを指定することをお勧めします。タグはそれを確認します。

この構成は、ポート443で接続した場合にのみ実行されるため、fromHTTPをリダイレクトできません。

POSTリクエストに応答して30 [12]リダイレクトを実行し、リクエストをGETに変換して引数をURLに書き込まない限り、引数を保持することはできません。あまりお勧めしません。

リクエストをプロキシすることはできますが、それで問題が解決するかどうかはわかりません。

ユーザーが暗号化されていない接続を介してPOSTを介してすでにデータを送信していて、暗号化に関心がある場合は、とにかくそのリクエストを中断させて、通知されて修正されるようにするのがおそらく最善です。フォームターゲットを修正し、フォーム自体(またはAJAXが含まれているページなど)がHTTPS経由でユーザーに送信されることを確認する必要があります。

[〜#〜] update [〜#〜]

Shawsyが問題はブラウザがサーバーへのHTTPS接続を確立できないことであると言っていることを考えると、リダイレクトは間違いなく望まれているものではありません。むしろ、リクエストをプロキシする必要があります。

<VirtualHost 10.1.2.91:80>
  # http://httpd.Apache.org/docs/2.2/mod/mod_proxy.html#proxypass
  ProxyPass /GladQE/link https://glad-test.com/GladQE/link.do
  ProxyPass /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do
</VirtualHost>

あるいは、mod_rewriteとRewriteRuleを使用してそれを行うこともできます。

ドメイン名を変更する場合、解決すべき追加の問題がいくつかありますが、ここではそうではないと思います。


余談ですが、私は個人的に、サーバーの/ etc/hostsファイル以外の場所にホスト名やIPアドレスを配置するのは好きではありません。マシンではなくサービスを検索する「web」や「mysql」などのhostsファイルで名前を使用し、Apacheやその他のファイルでそれらを参照すると、マシン間で構成を簡単に移動できます。ホストファイルの内容を確認するだけです。

2
mc0e

307リダイレクトを使用してメソッドを保持できます。から ウィキペディア

この場合、リクエストは別のURIで繰り返す必要があります。ただし、今後のリクエストでは引き続き元のURIを使用する必要があります。 302がこれまで実装されていた方法とは対照的に、元の要求を再発行するときに要求方法を変更することは許可されていません。たとえば、POSTリクエストは、別のPOSTリクエストを使用して繰り返す必要があります。

1
Gea-Suan Lin