javascript - 跨子域设置 Cookies javascript 陷阱

标签 javascript asp.net-mvc cookies

需要帮助才能跨子域使用 cookie。无法将 cookie 设置为 javascript 中的正确值。我不确定是 Javascript 未能设置 cookie 还是 MVC.NET 拒绝请求 cookie。

浏览器不工作

  • Chrome 43( window )
  • 火狐 38( window )
  • iOS 8 浏览器

设置我的 web.config 时使用 <httpCookies domain=".adomain.com" />事情开始变得非常糟糕。

我有一些 javascript 代码,结合 pickadate.js datepicker 将 cookie 值更改为用户选择的日期。

Javascript 函数

// Call pickadate API to retrieve selected date
var dateString = this.get('select', 'dd/mm/yyyy');

var cd = new Date();
var exp = cd.setMinutes(cd.getMinutes() + 10)

setCookie("_date", dateString, new Date(exp), "/", ".adomain.com");

window.location.reload();

function setCookie(name, value, expires, path, theDomain, secure) {
    value = escape(value);
    var theCookie = name + "=" + value +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((theDomain) ? "; domain=" + theDomain : "") +
    ((secure) ? "; secure" : "");
    document.cookie = theCookie;
}

.NET 在收到请求时正在做什么 更改日期选择器后,它将刷新页面,发送一个带有 cookie 中日期的新请求。这是一个 MVC.NET Controller 。然而,cookie 在客户端并没有改变。

    if(this.ControllerContext.HttpContext.Request.Cookies.AllKeys.Contains("_date"))
{
     cookie.Value =   this.ControllerContext.HttpContext.Request.Cookies[sessionDate].Value;

     // Do some logic with date to retrieve products

} else {
     // Set cookie.value to today's date
}

cookie.HttpOnly = false;
cookie.Path = "/";
cookie.Secure = true;

this.ControllerContext.HttpContext.Response.Cookies.Set(cookie);

http 请求包含 _date 的以下重复项:

_date=30/07/2015; 
_date=31/07/2015; 

但日期应该等于 31/07/2015,但我有重复项。 chrome 资源选项卡中的域不同。

_date=30/07/2015; domain=.adomain.com << 我需要它成为这个域设置 _date=30/07/2015;域名=sub.adomain.com

最佳答案

虽然我不是 .NET 专家,但可以在 Set-Cookie header 中明确指定 cookie 的域。根据 RFC 6265 ,如果您在 header 中将域指定为 example.com,则该 cookie 也可用于 www.example.comsubdomain.example.com。子域不被视为外部域,因此不属于安全违规行为。

可能在您的 Controller 中发送 cookie 之前添加类似这样的内容应该可行

cookie.Domain = "adomain.com";

关于javascript - 跨子域设置 Cookies javascript 陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151252/

相关文章:

javascript - typescript 的国际奥委会

javascript - 通过ajax post和codeigniter加载函数加载页面内容时,head部分的一些jquery函数无法调用

android - CookieSyncManager 是否需要一个有效的 WebView 实例?

php - Facebook 连接和第三方 cookie?

javascript - 用于匹配所有单词的正则表达式,包括标点符号和 unicode 字符。没有空白

javascript - 访问 Javascript ES6 类中声明的函数(ES2015?ES16?)

mysql - 如何让 ELMAH 登录到 MySQL?

asp.net-mvc - MVC 倾斜应用程序洞察中的 SignalR

c# - MVC结构查询

regex - Mod_Rewrite : default value if cookie is not set