Cookieを使用してユーザーが選択した言語を保存するASP.netアプリケーションがあります。ローカルホストを使用している場合を除き、すべて正常に動作します。 localhostを127.0.0.1に置き換えると、再び動作するようになります...なぜですか?
File://に対する意図された制限を見ましたが、実際にはlocalhostに対する意図された制限への参照を見つけることができません。
私が本当に理解できないのは、ASP.netセッション(ASP.NET_SessionId)とASP.netフォーム認証Cookie(.FSAUTHSSO)がlocalhostドメインに対して正しく設定されているのに、私のCookieが...なぜではないのかです!
私はすでに多くのグーグルと何も動作しません:
それで、何が問題ですか? :)
また、ASP.net Cookieを設定できるのに、設定できないのはなぜですか?違いは何ですか?
最後に、これはIEでも発生しますが、FFでは正常に動作します。
ありがとう!
アレックス
Cookieは、第2レベル以下向けに設計されています。第1レベルのドメインは機能しません。代わりに、アドレス http://127.0.0.1 (前述のとおり)を使用するか、hostsファイルを編集して、TLDを含む別のURLをアドレス127.0.0.1にマッピングすることができます。
yoursite.tld 127.0.0.1
これをさらに調査しました。この答えを見つけました: 明示的なドメインを持つローカルホスト上のクッキー
cookie.Domain = null
localhostで、それ以外の場合はドメイン名を使用します。
良いニュース。 localhostでCookieを設定できるようになりましたChrome Canaryビルドの開始: https://code.google.com/p/chromium/issues/detail?id=551906
私はこれがばかげているかもしれないことを知っていますが、asp.net mvcアプリケーションを引き継いでローカルで動作させることができませんでした。最後に、別の開発者が最近追加されたweb.configのエントリを指摘しました。
<httpCookies httpOnlyCookies="true" requireSSL="true" />
RequireSSLをローカルで「false」に設定します。変換を環境全体に適用することを忘れないでください。これがお役に立てば幸いです。
Chromeでも同じ問題が発生しました。 cookie.Secure = trueがありました。 localhostでそれを取り除くことで問題が解決しました。
(まったく同じ問題があった、FFIW:FFで動作し、IEまたはChrome)ではありませんでした)
chromeに2週間の有効期限が設定されたCookieが設定されていませんでした-これはたまたまauth Cookie(.AspNet.ApplicationCookie)であったため、継続的にログインページにリダイレクトされました。この問題は、私が試した他のブラウザでは発生しませんでした。
私はカスタムCookieを試して、chrome現在の日付が実際よりも早いであると判断したため、たとえば1で期限切れになったCookieを入れました。今日(2017年4月2日)で、実際にchromeこのCookieを2017年1月1日に期限切れに設定します!これは、2週間の期限切れのCookieが既に=として期限切れと見なされた理由を説明しますchromeは実際の有効期限の3分の3を切り捨てていたため、すでに有効期限が切れていると見なしていました。
Chromeの再起動ではこれは修正されませんでした-この段階でPCを再起動すると、バグが「修正」されました。また、これはlocalhost
でのみ発生したことに注意してください-他のすべてのサイトは大丈夫だったようです。
私の状況では、iisexpress(localhost:####)を使用してasp.netコアカミソリページアプリを実行していましたが、Chromeでこの問題に遭遇しました。私の修正は、Properties\launchSettings.jsonのiisSettingsがsslPort(44344)に対して0以外の番号を持っていることを確認することでした。 sslPortを0に設定すると、iisexpressはSSLを実行しません。 44344に変更すると、iisexpressのsslを使用してアプリが実行されます。または、Visual Studioのプロジェクトプロパティと[デバッグ]タブでSSLを有効にすると、launchsettings.jsonに対して同じ変更が行われます。たとえば、
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:29025/",
"sslPort": 44344
}
},
Chromiumの2011年以降のオープンに関する問題 があります。ドメインを明示的に「localhost」に設定する場合は、false
として設定するか、set the domain asを使用する必要があります。 127.0.0.1
。