web-dev-qa-db-ja.com

JavaScriptでCookieを設定できません

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>
35
KMC

最近、私は同様の問題に出くわしました。私のスクリプトは、ChromiumにCookieを保存できませんでしたが、他のすべての主要なブラウザーではうまく機能しました。いくつかのグーグル検索の後、Chrome=はローカルページからのCookieを無視します。ページをリモートサーバーにアップロードした後、魔法のように動作し始めました。

108
Dmitry Vyal

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

6
user2257736

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+";";
}
5
John Castell

クロムを使用すると、ローカル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の作成 が機能するはずです。

下線ではなく、コンピューター名にダッシュを使用していることに注意してください

2
maudulus

Chromeは、ローカルファイルシステムから読み込まれたページからのCookieを保存しません。例:file:/// C:/ User

2
Anne Lingesh

Chrome from localhostでページを開くと、同じ奇妙な動作になります。

Hostsファイルで同じページをマップし、マップされた名前で同じページを開くと、通常のCookie機能が再開します。

  1. ホストファイルを管理者として開きます。 (通常c:\windows\system32\drivers\etc\hosts
  2. ホストファイルの最後に127.0.0.1 localhostdevelopment.comなどを追加します
  3. ホストファイルを保存します(ファイルを管理者として開かなかった場合は拒否されます)
  4. Chromeで http://localhostdevelopment.com/ (または任意の名前)に移動します。
  5. クッキーが正常に動作することをお楽しみください。
2
LaustN

私にとってはうまくいきますが、ブラウザでJSCookiesが有効になっているかどうかもう一度確認してください。 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>

参照: 単純なCookieの読み取りと書き込み

お役に立てれば。

1
AlphaMale

URLをループバックネットワークインターフェースからNICのアドレスに変更するだけです。

http://localhost:8080 -> http://192.168.1.15:8080 
0
lfree