web-dev-qa-db-ja.com

Internet Explorer 11はサイトにCookieを設定しません

何らかの理由で、IE11(IE11のみ、他のIE9およびIE10でテスト済み)は、作業中のサイトでセッションを作成しません。そのため、サイトへのログインなどの基本的な機能は機能しません。

他のブラウザでは、これは完全に機能しています。

少し調べてみると、IEはアンダースコアのあるドメインでは機能しません。

29
prototype

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
26
bebbo

私はこれが古いことを知っていますが、これが将来誰かを助けることを願っています。 IE11のCookieに空白のexpires=;値を含めることはできません。 expiresフィールドを完全に除外する必要があります。

6
Gurnzbot

これは別のドメインのCookieにのみ適用される場合がありますが、誰かがこれをGoogleで見つけた場合(私がしたように)、これが役立つ場合があります。

IE11は、プライバシー設定によってはCookieを設定しない場合があります。

これは私のために働いた:

enter image description here

(インターネットオプション->プライバシー->詳細設定->すべてのCookieを有効にします)

4
Georgii Ivankin

単一ページVueアプリケーションを実行していたため、この問題が発生しました。1つのルートにCookieを設定し、すぐに別の「ページ」にルーティングしていました。 IEは次のページがロードされるまでCookieを送信しません。したがって、pushStateを使用する代わりに、ブラウザにページの再ロードを強制する必要がありました。

2
James Watkins

私は最近自分でこの問題を抱えていました。私の場合、問題はログインに成功したときに「ClearAuthenticationCache」コマンドを実行することで発生しました。 HTTP認証を削除するためにコマンドが実行されましたが、セッションCookieも削除されることがわかりました。

したがって、ログイン後に実行する場合は、「ClearAuthenticationCache」呼び出しを削除することをお勧めします。

document.execCommand("ClearAuthenticationCache");

詳細については、次のリンクを参照してください。 https://blogs.msdn.Microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/

1
Karl Dahlgren

セッション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に設定してみてください。

0
S. Roose

Martin Beebyが提案したように、Cookieの有効期限を確認し、サーバーで日付時刻を正しく設定してください。

あなたのサイトのセッションを確認しました。chrome期限切れのようです。

enter image description here

Cookieの作成/有効期限に関する問題があるようです&IEは、chromeベースのブラウザとは異なる動作をします。

0
Pranav Singh

サーバーが送信しているCookieの有効期限が昨日になっているようです。サーバーで日付時刻が正しく設定されていますか?

0
Martin Beeby

別のセットアップで同様の問題が発生しました。問題の内容と解決方法を共有したいと思います。それが苦しむ人々のための解決策へのアイデアを提供することを願っています。

セットアップ

  1. some-domain.comにある認証Cookieを設定する認証サービス
  2. localhostでWebpack Serverによってバンドルおよび実行されたReactアプリケーション
  3. リクエストはWebpackプロキシを経由してsome-domain.comに到達します。例えば
  '/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を確認する場合:

  1. クライアントとサーバーのドメインが一致する
  2. ローカルホストで作業する場合は、ドメイン値にnullを使用します
0
Alex Yan