JavaScriptではCookieが使用されています

高洛峰
リリース: 2016-11-19 16:19:30
オリジナル
1011 人が閲覧しました

Cookieとは、ブラウザがサーバーにアクセスした後にサーバーからブラウザに送信されるデータです。 Cookie は http プロトコルの一部です。クライアントが初めてサーバーにリクエストを送信すると、サーバーはクライアントに Cookie を送信して、次回同じサーバーにリクエストを送信するときに、サーバーはクライアントの Cookie を識別することで対応するアクションを実行します。たとえば、Web サイトにログインすると、Web サイトにユーザー名とパスワードが記録されるため、次回ログインするときにユーザー名とパスワードを入力することなく直接ログインできます。

Web サーバーは Set-Cookie HTTP メッセージ ヘッダーを送信することで Cookie を作成します。 Set-Cookie メッセージ ヘッダーは次の形式の文字列です:

Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
ログイン後にコピー

NAME: Cookie の名前、値はセットの値です。クッキー。

有効期限: Cookie の有効期限を決定し、Cookie がサーバーに送信されなくなる時期を指定します。この指定された時間が経過すると、ブラウザーは Cookie を削除します。 DATE 属性値は特定の形式である必要があります: Wdy (曜日)、日付-月-年 HH:MM:SS GMT。この形式でない場合は認識されません。有効期限オプションが設定されていない場合、Cookie のライフサイクルは現在のセッションに制限され、Cookie ファイルはブラウザを閉じると自動的に消えます。

Path: Cookie ヘッダーを送信するタイミングを制御します。Web サーバーは、Path で指定されたパスがユーザーが要求したリソース URL に存在する場合にのみ Cookie ヘッダーを送信します。一般に、ユーザーが入力した URL のパス部分に、最初の文字から始まる Path 属性で定義された文字列が含まれている場合、ブラウザはそれがチェックに合格したとみなします。 Path 属性の値が「/」の場合、Web サーバー上のすべての WWW リソースが Cookie を読み取ることができます。 path オプションが設定されていない場合、Path 属性値のデフォルトは、Web サーバーによってブラウザに渡されるリソースのパス名になります。

ドメイン: インターネット ドメイン内のどの Web サーバーがブラウザーによってアクセスされる Cookie を読み取ることができるかを決定します。つまり、このドメインのページのみが Cookie 内の情報を使用できます。 [ドメイン] オプションが設定されていない場合、Cookie 属性値は Web サーバーのドメイン名に設定されます。

需要注意的是,只有在 domain 选项核实完毕之后才会对 path 属性进行比较。
ログイン後にコピー

SECURE: 値のないフラグのみ。SSL または HTTPS 経由でリクエストが行われた場合にのみ、セキュア オプションを含む Cookie をサーバーに送信できます。ブラウザと Web サーバー間の通信プロトコルが暗号化認証プロトコルである場合にのみ、ブラウザが対応する Cookie をサーバーに送信することを示します。

JavaScript では、Cookie は状態を保存し、Web ブラウザーに識別メカニズムを提供するために使用されます。 JavaScript では、document.cookie プロパティを通じて Cookie を作成、維持、削除できます。

Cookie を設定する:

document.cookie="userName = mavis ";
ログイン後にコピー

各 Cookie は名前と値のペアです。一度に複数の名前と値のペアを設定したい場合は、次のメソッドを使用できます:

document.cookie = "userName=mavis; userId = 023";
ログイン後にコピー

Cookie では、escape() を使用します。をエンコードする関数では、セミコロン (;)、カンマ (,)、等号 (=)、スペースなどの一部の特殊記号の 16 進表現を使用できます。ただし、escape() エンコードを使用した後は、値を取り出してから unescape() を使用してデコードし、元の Cookie 値を取得する必要があります。

JavaScript のエスケープ() 関数は、文字列をすべてのコンピューターで読み取れるようにエンコードできます。構文は次のとおりです。escape(string)、string はエスケープまたはエンコードされる文字列です。

Cookie の値を取得する:
document.cookie を使用して、セミコロンで区切られた複数の名前/値で構成される文字列を直接取得します。これらの名前と値のペアには、このドメイン名の下にあるすべての Cookie が含まれます。

var myCookie = document.cookie;
ログイン後にコピー

指定された Cookie 値を取得します。

    //设置两个cookie
    document.cookie = "userName=mavis";
    document.cookie = "userId = 023";
    //获取cookie字符串
    var myCookie = document.cookie;
    var arrCookie = myCookie.split(";");
    var userName;
    for(var i = 0;i < arrCookie.length;i++){
    var myArr = arrCookie[i].split("=");
    //找到名称为userName的cookie,并返回值
    if(userName = myArr[0]){
        userName = myArr[1];
        break;
        }
    }
    alert("welcome " + userName);
ログイン後にコピー

Cookie の有効期限を設定します。
ID を使用して初めて Web サイトにログインするとき、一部の Web サイトでは、ID とパスワードを JavaScript に保存するかどうかを確認するプロンプトが表示され、実際に設定されますCookie の有効期限:

document.cookie = "userId = 023; expiress = GMT_String";
ログイン後にコピー

このステートメントは、userId Cookie を GMT_String で表される有効期限に設定します。この時間を超えると、Cookie は消滅し、アクセスできなくなります。 Cookie の値を 30 日後に期限切れになるように設定します:

    //获取当前时间 
    var date=new Date(); 
    var expiresDays=30; 
    //将date设置为30天以后的时间 
    date.setTime(date.getTime()+expiresDays*24*3600*1000); 
    //将userId和userName两个cookie设置为30天后过期 
    document.cookie = "userId = 023; userName = mavis; expires = " + date.toGMTString();
ログイン後にコピー

これにより、userId Cookie を削除できます。

アクセス可能な Cookie のパスを指定します。 パス属性を設定して指定します。

//指定可访问该cookie的目录
document.cookie = "name = mavis; path = cookiePath"

//在整个网站都可访问
    document.cookie = "name = mavis; path = /"
ログイン後にコピー

アクセス可能な Cookie のホスト名を指定します。 ホスト名は、同じドメイン内の異なるホストを参照します。 あるホストで作成された Cookie が別のホストに存在することはできません。アクセスされますが、ドメイン パラメータを通じて制御できます。
例: document.cookie="name=value;domain=.baidu.com"; この設定により、Baidu のすべてのホストが Cookie にアクセスできるようになります。

例:

function getCookie(name){
        if (document.cookie.length>0){
            start=document.cookie.indexOf(name + "=")
            if (start!=-1){ 
                start=start + name.length+1 
                end=document.cookie.indexOf(";",start)
                if (end==-1) end=document.cookie.length
                    return unescape(document.cookie.substring(start,end))
            } 
        }
        return ""
    }

    function setCookie(name,value,expiredays){
        var exdate=new Date()
        exdate.setDate(exdate.getDate()+expiredays)
        document.cookie=name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
    }
   setCookie("username","tank",1800); //设置cookie的值,生存时间半个小时
   alert(getCookie(&#39;test&#39;)); //取得cookie的值,显示tank
ログイン後にコピー

しかし、実行中に問題が発生し、Chromeブラウザで表示できませんでした:

JavaScriptではCookieが使用されています

そこで、ChromeブラウザにはCookieに制限があるため、次の理由でオンラインで確認しました。 , Chromeブラウザに与えたCookieは「ローカルデータの設定を許可する」に設定されていますが、それでも機能しません。この記事を読んでいる方、その理由を教えていただけませんか?ありがたい。

エッジブラウザでは次のように表示されます:

JavaScriptではCookieが使用されています

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート