何らかの理由で、IE11(IE11のみ、他のIE9およびIE10でテスト済み)は、作業中のサイトでセッションを作成しません。そのため、サイトへのログインなどの基本的な機能は機能しません。
他のブラウザでは、これは完全に機能しています。
少し調べてみると、IEはアンダースコアのあるドメインでは機能しません。
IE 11は、Cookieのドメイン値を好みません。空のままにします。
IE 11の場合:
Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; domain=tc.mk; httponly
IE 11:
Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; httponly
私はこれが古いことを知っていますが、これが将来誰かを助けることを願っています。 IE11のCookieに空白のexpires=;
値を含めることはできません。 expires
フィールドを完全に除外する必要があります。
単一ページVueアプリケーションを実行していたため、この問題が発生しました。1つのルートにCookieを設定し、すぐに別の「ページ」にルーティングしていました。 IEは次のページがロードされるまでCookieを送信しません。したがって、pushStateを使用する代わりに、ブラウザにページの再ロードを強制する必要がありました。
私は最近自分でこの問題を抱えていました。私の場合、問題はログインに成功したときに「ClearAuthenticationCache」コマンドを実行することで発生しました。 HTTP認証を削除するためにコマンドが実行されましたが、セッションCookieも削除されることがわかりました。
したがって、ログイン後に実行する場合は、「ClearAuthenticationCache」呼び出しを削除することをお勧めします。
document.execCommand("ClearAuthenticationCache");
詳細については、次のリンクを参照してください。 https://blogs.msdn.Microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/
セッションCookieの1つを2回設定しています:Set-Cookie: PHPSESSID=3iv5l4tn2ugkbf4vt09lilsi06; path=/ Set-Cookie: identity=1468380643; expires=Mon, 09-Jan-2017 12:31:46 GMT; path=/; domain=.tc.mk; httponly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; HttpOnly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; httponly
Internet Explorerは連続した呼び出しでこのCookie情報を再送信しませんが、たとえばChromeは 'kohanasession'の1つだけを取ります。'kohanasession 'を1回だけ送信してみてください。
また、Cookieに設定しているドメインは「tc.mk」ですが、www.tc.mkへのSEOリダイレクトがあります。この場合、IEはwwwのcookieを使用しません。www.tc.mkに設定してみてください。
サーバーが送信しているCookieの有効期限が昨日になっているようです。サーバーで日付時刻が正しく設定されていますか?
別のセットアップで同様の問題が発生しました。問題の内容と解決方法を共有したいと思います。それが苦しむ人々のための解決策へのアイデアを提供することを願っています。
セットアップ
'/api/': {
target: 'some-domain.com',
logLevel: 'debug',
secure: false,
changeOrigin: true,
pathRewrite: {
'^/api': '/api'
}
}
問題#1
私の認証サービスはCookieをsome-domain.comに設定し、my Reactアプリはlocalhostで実行されていたため、そのCookieがリクエストに添付され、認証フローが失敗しました。
ソリューション
Cookieドメインを書き換える必要があったため、webpackのプロキシ設定にこの行を追加しました
cookieDomainRewrite: {
'.some-domain.com': 'localhost'
}
webpack.config.jsでは次のようになります
devServer: {
...
proxy: {
'/api/': {
target: 'some-domain.com',
logLevel: 'debug',
secure: false,
changeOrigin: true,
pathRewrite: {
'^/api': '/api'
},
cookieDomainRewrite: {
'.some-domain.com': 'localhost'
}
}
}
...
}
したがって、これはChrome、Firefoxでは問題ありませんでしたが、IE 11。
IE 11はドメインをサポートしていませんlocalhostこのスレッドの以前の投稿で言及された理由により、書き換えが発生すると、Cookieは失われます。
私がしなければならなかった最後の変更は
cookieDomainRewrite: {
'.some-domain.com': null
}
これにより、IE 11。
合計
cookieを使用してIEを確認する場合: