Cookieを設定して読み取る非常に簡単なコード行があります。 Cookieの値を空のままにしましたが、理由がわかりません。 Cookieが有効になっており、Cookieがブラウザで機能することを知っています。
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
document.cookie = "Ding=dong";
</SCRIPT>
<script type="text/javascript">
alert(document.cookie);
</script>
</BODY>
</HTML>
最近、私は同様の問題に出くわしました。私のスクリプトは、ChromiumにCookieを保存できませんでしたが、他のすべての主要なブラウザーではうまく機能しました。いくつかのグーグル検索の後、Chrome=はローカルページからのCookieを無視します。ページをリモートサーバーにアップロードした後、魔法のように動作し始めました。
ChromeはファイルCookieを拒否します。プログラムを機能させるには、別のブラウザーで試してみるか、リモートサーバーにアップロードする必要があります。さらに、setcookieとgetcookieのコードは本質的に間違っています。これを使用してCookieを設定してみてください。
function setCookie(name,value,expires){
document.cookie = name + "=" + value + ((expires==null) ? "" : ";expires=" + expires.toGMTString())
}
使用例:
var expirydate=new Date();
expirydate.setTime( expirydate.getTime()+(100*60*60*24*100) )
setCookie('cookiename','cookiedata',expirydate)
// expirydate being a variable with the expiry date in it
// the one i have set for your convenience expires in 10 days
そしてこれはあなたのクッキーを取得します:
function getCookie(name) {
var cookieName = name + "="
var docCookie = document.cookie
var cookieStart
var end
if (docCookie.length>0) {
cookieStart = docCookie.indexOf(cookieName)
if (cookieStart != -1) {
cookieStart = cookieStart + cookieName.length
end = docCookie.indexOf(";",cookieStart)
if (end == -1) {
end = docCookie.length
}
return unescape(docCookie.substring(cookieStart,end))
}
}
return false
}
使用例:
getCookie('cookiename');
お役に立てれば。
乾杯、CoolSmoothie
CookieをChromeに保存しようとしましたが、保存すると同じエラーが発生しました。Firefoxで機能しましたが、同僚に尋ねると、パスとドメインを削除することを提案しました。 (Cookieの名前、値、有効期限、パスAMDドメインがありました)突然機能しました。Cookieを実際にChromeに保存するには、名前、値、有効期限が必要です。
それが役に立てば幸い。
例:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+";";
}
クロムを使用すると、ローカルWebサイトにCookieを作成できません。したがって、次の手順を実行して、このサイトがローカルでないとブラウザに思わせる必要があります。
1)WebサイトのルートディレクトリをC:\inetpub\wwwroot
に配置します(したがって、C:\inetpub\wwwroot\yourProjectFolder
のようになります)
2)computer name
を取得するには、Computer
を右クリックし、プロパティをクリックして、Computer Name
を探します。
3)ブラウザでhttp://my-computer-name/yourProjectFolder/index.html
にアクセスしてサイトにアクセスします。この時点で cookieの作成 が機能するはずです。
(下線ではなく、コンピューター名にダッシュを使用していることに注意してください)
Chromeは、ローカルファイルシステムから読み込まれたページからのCookieを保存しません。例:file:/// C:/ User
Chrome from localhost
でページを開くと、同じ奇妙な動作になります。
Hostsファイルで同じページをマップし、マップされた名前で同じページを開くと、通常のCookie機能が再開します。
c:\windows\system32\drivers\etc\hosts
)127.0.0.1 localhostdevelopment.com
などを追加します私にとってはうまくいきますが、ブラウザでJS
とCookies
が有効になっているかどうかもう一度確認してください。 if(document.cookie)
を使用してcookieが適切に設定されているかどうかを確認する必要があります。そうすれば、問題のある場所をデバッグするのが容易になります。たぶんあなたはクッキーがきちんと書かれていません。次のコードを検討してください。
Cookieを書き込む
次のコードを使用して、Cookieを記述します。
<script language="JavaScript">
cookie_name = "Basic_Cookie";
function write_cookie() {
if(document.cookie) {
index = document.cookie.indexOf(cookie_name);
} else {
index = -1;
}
if (index == -1) {
document.cookie=cookie_name+"=1; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
} else {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1) {
countend = document.cookie.length;
}
count = eval(document.cookie.substring(countbegin, countend)) + 1;
document.cookie=cookie_name+"="+count+"; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
}
}
</script>
クッキーを読む
Cookieを作成したら、それを使用するために読み取る必要があります。このスクリプトを使用して、Cookieを読み取ります。
<script language="JavaScript">
function gettimes() {
if(document.cookie) {
index = document.cookie.indexOf(cookie_name);
if (index != -1) {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1) {
countend = document.cookie.length;
}
count = document.cookie.substring(countbegin, countend);
if (count == 1) {
return (count+" time");
} else {
return (count+" times");
}
}
}
return ("0 times");
}
</script>
リンクでクッキーを呼び出す
HTML本文に次のコードが含まれるリンクをクリックしたときにCookieを設定します。
<script language="javascript">document.write(gettimes());</script>
お役に立てれば。
URLをループバックネットワークインターフェースからNICのアドレスに変更するだけです。
http://localhost:8080 -> http://192.168.1.15:8080