特定のページにアクセスしたときに、クライアント側の Cookie を削除しようとしています。これを行うにはどうすればよいですか?以下のコードを使用した後でも、クライアント側の Cookie を削除できません。
<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>
特定のページにアクセスしたときに、クライアント側の Cookie を削除しようとしています。これを行うにはどうすればよいですか?以下のコードを使用した後でも、クライアント側の Cookie を削除できません。
<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>
(コメントから展開)
Cookie のステータスを正しくテストしていないようです。単一の http 要求でこれを行うことはできません。クライアント Cookie を実際に削除するには、http 応答をブラウザに送り返す必要があります。その変更は、次のhttp リクエストに反映されます。
空の文字列を示す結果を確認するためにダンプを保持すると
また、ColdFusion のドキュメントを確認するexpire="now"
と、アクティブなページの Cookie スコープから対応する変数を削除しないと記載されています。そのため、Cookie を削除してからcookie
スコープを同じページにダンプすると、削除された Cookie は引き続き存在します。あなたの場合、value
空文字列になります。
動作を適切にテストするには、次の 3 つの要求が必要です。
クッキーを作成します:
<cfcookie name="GIFT_CAT" value="Created cookie at #now()#"/>
. ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。
cookie
スコープに存在クッキーを削除します: <cfcookie name="GIFT_CAT" value="" expires="NOW" />
. ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。
cookie
スコープにまだ存在します (expire
アクティブなページで削除されないため)最後に、Cookie を確認します<cfdump var="#COOKIE#">
。ブラウザでスクリプト「GIFT_CAT」を実行すると、次のようになります。
cookie
スコープに存在しないすべての属性が設定された 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" />
動作します。