ホームページ  >  記事  >  ウェブフロントエンド  >  JS 操作 Cookie には (読み取り、追加、削除)_JavaScript スキルが含まれます

JS 操作 Cookie には (読み取り、追加、削除)_JavaScript スキルが含まれます

WBOY
WBOYオリジナル
2016-05-16 17:45:231195ブラウズ

私はいつも js を使用していくつかの cookie 操作を実装してきました。今日は、js による cookie の読み取り、js による cookie の追加、js による cookie の削除を含めて、js による cookie オペレーティング システムの使用方法を整理しました。例は次のとおりです。




Cookie 処理関数の演習 (私が考えたものではなく、オブジェクト指向の改善) 🎜>< スクリプト言語="JavaScript" type="text/javascript">
function addCookie(objName,objValue,objHours){// Cookie を追加します
var str = objName "="scape(objValue) ;
if(objHours > 0){//0 の場合、有効期限は設定されず、ブラウザを閉じると Cookie は自動的に消えます
var date = new Date(); var ms = objHours*3600*1000;
date.setTime(date.getTime() ms);
str = "; 期限切れ = date.toGMTString(); = str;
alert("Cookie の追加に成功しました");
}
function getCookie(objName){// 指定された名前の Cookie の値を取得します
var arrStr = document.cookie。 split("; ");
for(var i = 0;i var temp = arrStr[i].split("="); temp[0] == objName) return unescape(temp[ 1]);
}
}
function delCookie(name){// 指定された名前の Cookie を削除するには、次のように設定します。有効期限を過去の時刻に変更します
var date = new Date ()
date.setTime(date.getTime() - 10000);
document.cookie = name "=a;expires=" date .toGMTString();
}
//すべての Cookie 文字列を読み取ります
function allCookie(){//すべての保存されている Cookie 文字列を読み取ります
var str = document.cookie; str == ""){
str = "Cookie は保存されていません"
}
alert(str)
}
関数 $(m,n){
ドキュメントを返します。 .forms[m].elements [n].value;
}
function add_(){
var cookie_name = $("myform","cookie_name");
var cookie_value = $( "myform","cookie_value" );
var cookie_expireHours = $("myform","cookie_expiresHours");
addCookie(cookie_name,cookie_value,cookie_expireHours);
function get_();
var cookie_name = $ ("myform","cookie_name");
var cookie_value = getCookie(cookie_value);
alert(cookie_value); >var cookie_name = $(" myform","cookie_name");
delCookie(cookie_name)
}
/Cookie を追加
function addCookie(name,value,expires,path,domain){
var str=name "="escape(value);
if(expires!=""){
var date=new Date() ;
date.setTime(date.getTime()expires*24*3600*1000);//有効期限の単位は日です
str =";expires=" date.toGMTString() ;
}
if(path!=""){
str =";path=" path;//Cookie にアクセスできるディレクトリを指定します
}
if(ドメイン! =""){
str =";domain="domain;//Cookie にアクセスできるドメインを指定します
}
document.cookie=str;
}
//Cookie を取得します
function getCookie(name){
var str=document.cookie.split(";")
for(var i=0;ivar str2= str[i].split("= );
if(str2[0]==name)return unescape(str2[1]);
}
}
// クッキーを削除します
関数 delCookie(name){
var date=new Date();
date.setTime(date.getTime()-10000);
document.cookie=name ”=n;expire=” date.toGMTString();


【個人的には以下の方が良いと思います! ]
もちろん、クッキーの 4 つの属性を紹介する必要があります。これらの属性は、次の形式で文字列値に追加されます:
name=[;expires=][; path=] ; セキュア]
名前=<値>[; 有効期限=<ドメイン>][; パス=<パス>] [; セキュア]
、および は、対応する値に置き換える必要があります。 GMT 形式を使用する必要があります。Javascript スクリプト言語の日付クラス Date の .toGMTString() メソッドを使用して、GMT 形式の日付値を取得できます。角括弧は、この項目がオプションであることを示します。たとえば、[; secure] を囲む角括弧は、Cookie を安全に設定する場合は、Cookie 文字列値の末尾に「; secure」を追加する必要があることを意味します。 Cookie 文字列の末尾に「; secure」が追加されていない場合、Cookie は安全ではありません。山括弧 <> と角括弧 [] を Cookie に追加しないでください (値の内容である場合を除く)。属性を設定する場合、属性に制限はなく、任意の順序で設定できます。

次は例です。この例では、Cookie「username」は 15 分後に期限切れになるように設定されており、サーバー上のすべてのディレクトリからアクセスでき、「mydomain」内のすべてのサーバーからアクセスできます。 .com」ドメインにアクセスし、セキュリティ状況は安全です。
コードをコピー コードは次のとおりです:

// Date() のコンストラクターは次のとおりです。ミリ秒単位で設定 Unit
// .getTime() メソッドは時間をミリ秒単位で返します
// したがって、15 分の有効期限を設定するには、60000 ミリ秒に 15 分を掛けます
var Expiration = new Date(( new Date( )).getTime() 15 * 60000);
document.cookie = "username="escape(form.username.value) "; 期限切れ =
期限切れ.toGMTString() "; path= " "/ " "; _
domain=" "mydomain.com" "; secure";
// 特定の Cookie 値を読み取る関数を定義します。 【指定した名前のCookieオブジェクトを取得! ]
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);
// インデックスが見つかった場合は、次のことを意味します。 Cookie が存在します ,
// それ以外の場合は、Cookie が存在しないことを意味します。
if (cookie_pos != -1)
{
// 値の先頭に cookie_pos を置き、値に 1 を加えるだけです。
cookie_pos = cookie_name.length 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1)
{
cookie_end = allcookies.length ;
}
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
}
// 関数の呼び出し
var cookie_val = getCookie("ユーザー名");
3. Cookie の有効期限を設定しても、閉じたときに自動的に消去されるのはなぜですか?
JSP が Cookie をどのように操作するかを勉強してみませんか?
Cookie の概念:
Cookie の形式は実際にはプレーン テキスト情報であり、サーバーからクライアントに送信されます。 Web ページに保存され、クライアントのハード ドライブの指定されたディレクトリに保存されます。Cookie は重大なセキュリティ上の脅威を引き起こす可能性があると言われていますが、実際はそうではありません。サーバーが Cookie を読み取るときは、サーバーに関連する情報のみが読み取られます。さらに、ブラウザでは通常 300 個の Cookie のみを保存できますが、各サイトでは最大 20 個の Cookie を保存できるため、スペースをまったく占有しません。たとえば、Cookie の存続時間が設定されている場合、Cookie は 1 分後にブラウザによって削除されます。
Cookie バージョン:
現在 2 つのバージョンがあります :
バージョン 0: Netscape によって策定されました。互換性を維持するために、Java は現在バージョン 0 のみをサポートしています。スペース、角括弧、括弧、等号 (=) は使用できません。 )、カンマ、二重引用符、またはスラッシュが Cookie コンテンツに含まれています。
バージョン 1: RFC 2109 文書に基づいており、上記で制限されている文字はすべて使用できます。ただし、互換性を維持するために、これらの特殊文字はできるだけ使用しないでください。 JSP での操作: 型 メソッド名 メソッドの説明
String getComment() Cookie 内のコメントを返します。コメントがない場合は null 値を返します。
String getDomain() に適用されるドメイン名を返します。 getDomain() メソッドを使用してブラウジングを示す サーバーは同じドメイン内の他のサーバーに Cookie を返しますが、通常、Cookie は送信元のサーバーとまったく同じ名前のサーバーにのみ返されます。ドメイン名はドットで始まる必要があることに注意してください。
int getMaxAge() は、Cookie の有効期限が切れるまでの最大時間を秒単位で返します。
String getName() は Cookie の名前を返します。
String getPath() は Cookie が適用されるパスを返します。パスが指定されていない場合、Cookie は現在のページが存在するディレクトリとそのサブディレクトリ内のすべてのページに返されます。
boolean getSecure() は、ブラウザが安全なプロトコルを介して Cookie を送信する場合は true 値を返し、ブラウザが標準プロトコルを使用する場合は false 値を返します。
String getValue() は Cookie の値を返します。 getValue/setValueについては後ほど詳しく紹介します。
int getVersion() は、Cookie が準拠するプロトコルのバージョンを返します。
void setComment(String purposes) Cookie にコメントを設定します。
void setDomain(String pattern) Cookie に Cookie のドメイン名を設定します。
void setMaxAge(int expiry) Cookie の有効期限を秒単位で設定します。 。
void setPath(String uri) は Cookie のパスを指定します。
void setSecure(boolean flag) HTTPS や SSL など、ブラウザで使用されるセキュリティ プロトコルを示します。
void setValue(String newValue) は、Cookie の作成後に新しい値を設定します。
void setVersion(int v) Cookie が従うプロトコルのバージョンを設定します

簡単な例 1. Cookie の書き込み --- writecookie.jsp
---- - ------------------------------------------------- - ------

コードをコピー コードは次のとおりです:
<% @ page contentType="text/html; charset=ISO8859_1" %>
<%
Cookie _cookie=new Cookie("user_delfancom", "delfan"); ); // Cookie の存続時間を 30 分に設定します
response.addCookie(_cookie) // クライアントのハードディスクに書き込みます
out.print("Cookie 書き込み完了");


2. Cookie.jsp を読み取ります --- readcookie.jsp
-------------------------- ----- ----------------------------------



コードをコピーします コードは次のとおりです: <%
Cookie cookies[]=request.getCookies(); // 読み取りすべての Cookie を該当するディレクトリに保存します。
Cookie sCookie=null
String sname=null;
if(cookies==null); Cookie はありません
out.print ("none any cookie");
else
{
out.print(cookies.length "
"); =0;i{
sCookie=cookies[i];
sname=sCookie.getName(); getValue();
out.println(sname "->" name "
");
}
}
%>
注意すべき 2 つのこと 質問
:
1. Cookie には該当するパスに問題があります。つまり、writecookie.jsp と readcookie.jsp が合意されたディレクトリに配置されるかどうかに問題があります。同じディレクトリにある場合は、readcookie.jsp が配置されているパスとして、パスを設定する必要があります。2. Cookie 配列を読み取るときに、多くのコードが空 (null) であるかどうかを判断する必要があります。インターネットではこの点は書かれていません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。