1

私はSSL仮想ホストを強制してnginxいます:

if ($ssl_protocol = "") {
    rewrite ^ https://www.mydomain.com$request_uri? permanent;
}

問題は、ユーザーがセッション (Cookie) を使用してログインしている場合に、新しいタブを開き、http://www.mydomain.comこの作業に移動して に転送するhttpsが、セッションが失われることです。nginxによる書き換えルールでcookieが転送されていないからだと思います。

書き換えを実行するだけでなく、Cookie を転送する方法はありますか?

ありがとう。

4

2 に答える 2

1

Cookie はリダイレクトとは無関係です。「リダイレクト」メッセージを送信するサーバーは、それとは何の関係もありません。特定のリクエストで Cookie を送信するかどうかを決定するのは、純粋に Web ブラウザです。これは、Cookie に設定されている属性 (Path、Domain、Secure、HttpOnly など) に基づいています。ユーザーの Cookie の属性が、新しい URL にアクセスするときに送信しないようにブラウザに指示するように設定されていることがわかると思います。たとえば、別のドメインにリダイレクトしている場合、これは間違いなく発生します。

于 2013-02-13T05:03:54.790 に答える
0

この問題を解決する方法は、セッションと認証を維持するという 2 つの問題を分離することです。その後、セッションを維持するためだけにセッション ID を保護せずに残し、別の Cookie を使用してログイン状態を確認することができます。

サイトが HTTPS と混合した HTTP を使用している場合、ID は URL で平文で送信されます。

于 2013-02-13T05:54:28.500 に答える