1

特定のページにアクセスしたときに、クライアント側の Cookie を削除しようとしています。これを行うにはどうすればよいですか?以下のコードを使用した後でも、クライアント側の Cookie を削除できません。

<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>
4

2 に答える 2

2

(コメントから展開)

Cookie のステータスを正しくテストしていないようです。単一の http 要求でこれを行うことはできません。クライアント Cookie を実際に削除するには、http 応答をブラウザに送り返す必要があります。その変更は、次のhttp リクエストに反映されます。

空の文字列を示す結果を確認するためにダンプを保持すると

また、ColdFusion のドキュメントを確認するexpire="now" と、アクティブなページの Cookie スコープから対応する変数を削除しないと記載されています。そのため、Cookie を削除してからcookieスコープを同じページにダンプすると、削除された Cookie は引き続き存在します。あなたの場合、value空文字列になります。

動作を適切にテストするには、次の 3 つの要求が必要です。

  1. クッキーを作成します: <cfcookie name="GIFT_CAT" value="Created cookie at #now()#"/>. ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。

    • CFcookieスコープに存在
    • ブラウザの Cookie に存在します

  2. クッキーを削除します: <cfcookie name="GIFT_CAT" value="" expires="NOW" />. ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。

    • CFcookieスコープにまだ存在します (expireアクティブなページで削除されないため)
    • ブラウザーの Cookie には存在しません (ブラウザーは応答を受信した後に Cookie を削除するため)

  3. 最後に、Cookie を確認します<cfdump var="#COOKIE#">。ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。

    • CFcookieスコープに存在しない
    • ブラウザの Cookie には存在しません
于 2013-10-26T19:25:02.137 に答える
2

すべての属性が設定された Cookie と同じであることを確認する必要があります。特に安全なドメインとパス。

<cfcookie name="test1" value="1" domain="test.com" />
<cfcookie name="test1" value="" expires="now" />

動作しませんが、

<cfcookie name="test1" value="1" domain="test.com" />
<cfcookie name="test1" value="" domain="test.com" expires="now" />

動作します。

于 2013-10-25T17:57:56.227 に答える