web-dev-qa-db-ja.com

asp.netがlocalhostにCookieを作成しないのはなぜですか?

さて、これは本当にちょっと私を悩ませ始めています。 "C:\ Projects\MyTestProject \"にある簡単なWebプロジェクトのセットアップがあります。 IIS私のマシンでは、仮想ディレクトリをこの場所にマップしたので、サイトをローカルで実行できます(Visual Studioから実行できることを理解しています。この方法の方が好きです)。この仮想ディレクトリに「mtp」という名前を付け、私は http://localhost/mtp/index.aspx を介してアクセスします。これはすべて正常に機能しています。

しかし、私がクッキーを作成しようとするときはいつでも、それは単に書き出されないだけですか?私はこれをFF3とIE7で試してみましたが、単純にCookieが書き出されません。わかりません。私は私のhostsファイルに "127.0.0.1 localhost"を持っています、私は本当に他に何ができるか考えることができません。アドバイスありがとうございます。

ジェームズ

42
James McConnell

Cookieの仕様には2つの名前とその間のドットが必要であるため、Cookieドメインを「localhost」にすることはできません。これが私がそれを解決した方法です:

  1. これを%WINDIR%\ System32\drivers\etc\hostsファイルに追加します:127.0.0.1 dev.livesite.com

  2. 開発時には http:// localhost の代わりに http://dev.livesite.com を使用します

  3. Cookieを作成するときは、「。livesite.com」をcookiedomain(先頭にドットを含む)として使用します。最近のブラウザー もう先頭のドットは必要ありません ですが、後方互換性のためにとにかく使用したい場合があります。

  4. 今ではすべてのサイトで動作します:

91
Sire

答えが選ばれたことがないので、私はまだ何か他のものを投げることができると思います。

Localhostで実行されているアプリケーションでCookieが書き込まれない原因の1つは、web.configのhttpCookies設定です。ドメイン属性が特定のドメインに設定されていて、ローカルホストで実行している場合、Cookieが書き込まれませんでした。

開発中のドメイン属性を削除すると、Cookieが書き込まれます。

<!-- Development -->
<httpCookies httpOnlyCookies="true" requireSSL="false" />
<!-- Production -->
<!--<httpCookies domain=".domain.com" httpOnlyCookies="true" requireSSL="true" />-->
14
Jason Eades

Cookieに有効期限を割り当てていますか?デフォルトでは、ブラウザセッションが期限切れになるとCookieは期限切れになります。つまり、ディスクに何も書き込まれません。

0
Robert C. Barth