zoukankan      html  css  js  c++  java
  • ajax异步跨域请求获取cookie

    我们设置cookie时一般只是设置了cookie的key以及value,有别的需求的时候呢也只是会设置一下过期时间,然而这种设置并不适用于在跨域的情况下。

    在做项目时进行设置cookie如下所示:

      HttpCookie cokie = new HttpCookie("test");
                    cokie.Value =“123”;
                    cokie.Expires = DateTime.Now.AddHours(1);
                    cokie.Domain = "XXXXX";
                    cokie.Path = "/";
                    cokie.HttpOnly = true;
                    Response.Cookies.Add(cokie);

    照着这样设置cookie,然而用js中的document.cookie获取全部的cookie是不能够获取到cookie的值。这样的原因首先是因为你设置了httponly,设置了httponly是无法通过js获取到cookie的值,就算注释了不管是js还是用HttpContext.Current.Request.Cookies[“test”]来获取都不能够获取到cookie的值,原因在于通过js跨域请求获取cookie还需要如下操作:

        $.ajax({
            url: xxx,
            type: "post",
            data: { id: id, catid: catid, source: "pc" },
           xhrFields: {
                withCredentials: true
            },
            success: function (result) {
                var all = JSON.parse(result);
            
    
            }
        })

    最关键的是请求的时候要加上:

     xhrFields: { withCredentials: true }
    

     然后服务端要进行设置:

    HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");
    HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://xxxx");

     这样你就可以获取到相应的cookie值,需要注意的是设置domain在接收cookie的那个域名下以及HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://xxxx");要加指定的域名,不能用*

  • 相关阅读:
    js 置顶操作
    js input输入数量控制
    js 时间倒计时
    html内容垂直居中
    大图片随浏览器水平居中显示
    img,display:inline相关间隙样式问题
    js淡入淡出轮换思想(1)
    js 禁止|阻止滚动条滚动
    kotlin学习--第一个kotlin项目
    jdk8+Mybatis3.5.0+Mysql读取LongBlob失败
  • 原文地址:https://www.cnblogs.com/97310ZT/p/9916276.html
Copyright © 2011-2022 走看看