2017-03-06 9 views
0

私は、クライアントと私のサイトの間の仲介者としてcloudflareの "flexible ssl"を使用しています。cloudflare flexible sslオプションを使用すると、リクエストを送信する代わりにログインフォームが更新されます

これを設定した後、私はブラウザに行き、HTTPSを介して、私のサイトにアクセスしてみました:

https://example.com/login

、すべての作品。私はログイン情報を記入して、首尾よくログインし、http://example.comには載っていません。私は手動でhttps://example.com/*と入力します。*は他の多くのページであり、すべて正常に動作します。

これで、動作しているhttpsを使用するようにすべてのリクエストをリダイレクトします。だから私は彼らのウェブサイト上で私のcloudflareアカウントに移動し、ページルールを作成する:http://example.com/*常にhttpsを使用する。

は今、私はexample.com/loginに行き、成功しhttps://example.com/loginにリダイレクト、私は情報に私のログに記入し、ログインフォームを提出し、ページが更新され、私は空のログインフォームに戻っhttps://example.com/loginにしています。

誰でも問題の内容やトラブルシューティングの方法を知っていますか?

私はサイトのフレームワークとして、WebサーバーとしてApacheを使用しています。

答えて

1

ページルールの作成:常に使用するには、* http://example.com/をHTTPS

は指摘しました。 CloudFlareは、http://example.com/ *のすべてのHTTP要求を受け入れ、同等のHTTPS要求に301リダイレクトを返すことで、これを実行することに注意してください。ブラウザはHTTPS URLにGET要求を送信することによってリダイレクトを完了します。

私は情報に私のログに記入し、ログインフォームに

を提出慎重にログインフォームのソースをチェックして、URL、ログインフォームがに提出されているものを確認してください。私の推測では、フォームはhttp://example.com/loginかそれに類するものに提出されています。 CloudFlareはPOSTリクエストをhttp://example.com/loginに受け入れ、https://example.com/loginに301リダイレクトを返します。ブラウザはGETリクエストとして完了し、ログインデータを送信しません。

あなたの最善の解決策は、ログインフォームがHTTP URLではなく正しいHTTPS URLにPOSTされるようにすることです。

とにかく私の最高の推測です。

トラブルシューティングの方法を教えてください。

異なるログファイルを使用して、サーバー上のHTTP要求とHTTPS要求を区別していることを確認してください。

いくつかの他の提案:

  • はレッツ・暗号化するSSL証明書を取得し、CloudFlareの、サイト間の通信はすべてSSLであるように、あなたのサイトにそれを置きます。https://letsencrypt.org/
  • すべてのHTTPS要求に対してHSTSが有効になっていることを確認し、ブラウザがHTTP URLに要求を送信しないことを確認します。
  • CloudFlareを使用しないでブラウザとWebサーバーの間でHTTPSを使用して動作するすべてをテストできる開発サーバーを作成します。 CloudFlareを使わずにHTTPSモードで作業したら、CloudFlareで試してみると、基本的に同じ結果が得られるはずです。あなたの問題は、HTTP - > HTTPSスイッチであり、特にCloudFlareではありません。
関連する問題