同じ一貫した問題で Javascript を使用して Cookie を設定および読み取る 2 つの別々の方法を試しました。
新しいブラウザー セッションで初めてページにアクセスし、Cookie を設定するページを通過すると、最初のページで Cookie が正常に設定されていることが報告され、ユーザーは次のページにリダイレクトされます。次のページで Cookie を確認しますが、検出されず、最初のページに戻ります。最初のページをもう一度確認すると、魔法のように 2 番目のページで Cookie が適切に設定されていることが検出されます。
これはテストには問題ありませんが、エンドユーザーのエクスペリエンスは最悪です。私は、Quirksmode のコードと同様に、Cookie を処理するために Mozilla が推奨するコードを使用しました。どちらの方法でも同じ結果が得られます。後で参照するために Cookie に JSON を設定しています。
クッキーを設定するページ: /setCookie.php
Cookie を読み取るページ: /readCookie.php
Quirksmode コードを使用して Cookie を設定するコード:
createCookie('userJSON',JSON.stringify(dat));
window.location="/readCookie.php";
Quirksmode コードを使用して Cookie を読み取るコード:
if( !readCookie('userJSON') ){
window.location="/setCookie.php";
}
Mozilla コードを使用して Cookie を設定するコード:
docCookies.setItem("userJSON",JSON.stringify(dat),null,"/");
window.location="/readCookie.php";
Mozilla コードを使用して Cookie を読み取るコード:
if( !docCookies.getItem('userJSON') ){
window.location="/setCookie.php";
}
JSON は Cookie に保存され、jsonlint.com を使用して有効であることがテストされています。
{
"first_name": "",
"last_name": "",
"email": "email@myDomain.test",
"phone": "",
"state": "CA",
"barcode": "",
"session_id": "1338398988873_4981",
"guest_id": "",
"event_id": "",
"queue": "0",
"SEND_MMS": false,
"SEND_EMAIL": false,
"location": "web"
}
私は Mozilla または Quirksmode のコードを変更していないので、それらのコードを含むページへのリンクがここに含まれています。
Mozilla Cookie: https://developer.mozilla.org/en/DOM/document.cookie
Quirksmode Cookie: http://www.quirksmode.org/js/cookies.html
コードからわかるように、パスは「/」に設定されているため、ドメイン内のすべてのページで有効になるはずです。この問題についての洞察をいただければ幸いです。
繰り返しますが、これは新しいブラウザー セッションで最初にページにアクセスしたときにのみ問題になります (ブラウザーを終了し、再度開いてページにアクセスすることで簡単に再現できます)。その後、同じブラウザー セッションからこれらのページを実行します。 setCookie.php ページに戻ることなく、これらのページをスムーズに流れます。