Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax和JSON时设置cookie_Javascript_Ajax_Json_Cookies - Fatal编程技术网

Javascript 使用Ajax和JSON时设置cookie

Javascript 使用Ajax和JSON时设置cookie,javascript,ajax,json,cookies,Javascript,Ajax,Json,Cookies,正在寻找在基于JSON和Ajax的web应用程序中设置浏览器cookie的公认做法 浏览器似乎不接受来自服务器的用于JSON请求的Cookie。这给我留下了两个选择,我可以看到: 在执行需要涉及cookie的操作时,不要使用JSON请求,而是在文本到达客户端后使用JSON.parse() 通过JSON将cookie信息从服务器发送到客户端,然后使用浏览器设置cookie,而不是通过服务器头。这是否也意味着必须在客户端读取cookie信息并通过JSON发送回服务器,因为浏览器也不会通过AJAX J

正在寻找在基于JSON和Ajax的web应用程序中设置浏览器cookie的公认做法

浏览器似乎不接受来自服务器的用于JSON请求的Cookie。这给我留下了两个选择,我可以看到:

  • 在执行需要涉及cookie的操作时,不要使用JSON请求,而是在文本到达客户端后使用
    JSON.parse()
  • 通过JSON将cookie信息从服务器发送到客户端,然后使用浏览器设置cookie,而不是通过服务器头。这是否也意味着必须在客户端读取cookie信息并通过JSON发送回服务器,因为浏览器也不会通过AJAX JSON请求发送cookie信息
  • 我倾向于选择选项1,但这两个选项看起来都很糟糕。我是不是遗漏了什么


    谢谢

    只有当域属性与您所在的域匹配时,才会发送Cookies

    例如,您设置了一个域“.domain.com”的coockie。向domain.com或任何子域发出的任何请求都将包含cookie,但仅此而已

    对于其他域的请求,您需要coockie set服务器端,或者如果用户与为该域设置cookie的页面交互,则需要coockie set服务器端

    两种简单的设置cookie的方法是:

  • 显然,对脚本进行ajax调用以设置cookie
  • 这样做:
  • HTML:

    
    
    PHP:


    只有当域属性与您所在的域匹配时,才会发送cookie

    例如,您设置了一个域“.domain.com”的coockie。向domain.com或任何子域发出的任何请求都将包含cookie,但仅此而已

    对于其他域的请求,您需要coockie set服务器端,或者如果用户与为该域设置cookie的页面交互,则需要coockie set服务器端

    两种简单的设置cookie的方法是:

  • 显然,对脚本进行ajax调用以设置cookie
  • 这样做:
  • HTML:

    
    
    PHP:

    
    
    <script type="text/javascript" src="http://domain2.com/cookie_login_page.php?username=johnsmith&hash=1614aasdfgh213g"></script>
    
    <?php
        // ... setCookie stuff
        echo 'var cookie_set = true;';
    ?>