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");要加指定的域名,不能用*

  • 相关阅读:
    day10T3改错记
    day9T1改错记
    day8T1改错记
    洛谷P5068[Ynoi2015]我回来了(bfs+bitset)
    BZOJ4939[Ynoi2016]掉进兔子洞(莫队+bitset)
    [学习笔记]dsu on tree
    [学习笔记]FWT(快速沃尔什变换)
    [学习笔记]FMT(快速莫比乌斯变换)&子集卷积(待填坑)
    POJ-1743-Musical Theme(后缀数组)
    后缀数组模板
  • 原文地址:https://www.cnblogs.com/97310ZT/p/9916276.html
Copyright © 2011-2022 走看看