「Cookie」とも呼ばれる HTTP Cookie は古くから存在していますが、まだ完全には理解されていません。主な問題は、Cookie がバックドアやウイルスであると考えられたり、Cookie がどのように機能するかを単に理解していないなど、多くの誤解があることです。 2 番目の問題は、Cookie の一貫したインターフェイスが欠如していることです。これらの問題にもかかわらず、Cookie は依然として Web 開発において非常に重要な役割を果たしているため、もし Cookie が代わりに使用されずに消滅すると、私たちのお気に入りの Web アプリケーションの多くが役に立たなくなるでしょう。
1. クッキーの由来
Cookie は 1993 年 3 月に Netscape の従業員 Lou Montulli によって初めて発明され、その後 W3C によって採用されました。現在、Cookie は標準となり、IE、Chrome、Firefox、Opera などのすべての主流ブラウザーでサポートされています。
Cookie の誕生は、HTTP プロトコルの固有の欠陥によるものです。HTTP は、リクエスト/レスポンスが完了すると、クライアントとサーバー間の接続が閉じられ、新しい接続を確立する必要があります。再度データを交換します。これは、サーバーが接続からセッションを追跡できない、つまり、サーバーがどのクライアントであるかを認識できないことを意味します。
ログイン/ショッピングカートなどの一部の一般的なアプリケーションは実装できません。たとえば、ユーザー A がショッピング モールで購入した商品は、ユーザー A がいつ購入しても同じセッションに属しており、ユーザー B またはユーザー C のショッピング カートに入れることはできません。同じセッションに属していません。
基本原理は図の通りです
2. クッキーの操作
Cookieに対する操作には以下が含まれます
1.名前
2.価値
3.ドメイン
4.パス
5.有効期限切れ
6.セキュリティ
7.HttpOnly (サーバー側のみ)
Cookie は主にサーバー側で作成されますが、JS も Cookie を作成できますが、HttpOnly タイプの JS は作成できないことに注意してください。
ブラウザが提供するCookie API(document.cookie)は単純すぎるため、次のようにsetter/getter cookie関数を使用するとより便利です
。
もちろん、より便利な機能を提供する https://github.com/florian/cookie.js もあります。
3. クッキーの種類
1. 通常のCookieはサーバーサイドとJSの両方で作成でき、JSからアクセスできます
2.HttpOnly Cookie はサーバーによってのみ作成でき、主にセキュリティ上の理由から JS によって読み取ることはできません
3. セキュア Cookie (https のみ)、サーバー側と JS の両方を作成できます。JS は HTTPS でのみアクセスできます
たとえば、Sina Cloud のページ http://snandy.sinaapp.com/php/cookie.php をテストするとき、c1、c2、c3 という 3 つの Cookie を植えました
Firefoxでアクセス
私は3種類の品種を持っていますが、サウトは新浪雲で栽培されています。
Firebug コンソールに document.cookie と入力します
c2 と c3 にアクセスできないことがわかります。 c2 は安全な Cookie であり、https プロトコルでアクセスする必要があります。c3 は httpOnly であり、JS ではアクセスできないことに注意してください。
アクセスプロトコルを https: https://snandy.sinaapp.com/php/cookie.php に変更し、firebug コンソールに切り替えて document.cookie と入力すると、c2 が表示され、アクセスできるようになります
4. クッキーの落とし穴
1. Cookieが大きすぎる、または多すぎる場合、ページにアクセスするとエラーが報告されます
。
そのため、サイトのCookieは管理する必要があり、自由にCookieを植えることはできません。さらに、Cookie を指定された範囲に制限するパスを指定するようにしてください。
ウェブサイトのブラウザcookielimits.squawky.netは、各ブラウザのCookieサイズを記録します
2. 中国語を保存する場合は Unicode エンコード (encodeURIComponent) が必要です。そうしないと保存された文字が文字化けします
http://www.bkjia.com/PHPjc/1091854.html