asp.net - 跨子域处理 CORS 和 Cookie 范围

标签 asp.net cookies cors

我很难协调来自 StackOverflow 和其他来源的有关跨子域调用的使用的一些相互冲突的信息。考虑这两个共享公共(public)域的独立站点:

  • 网站 #1:www.myDomain.com
  • 网站 #2:sub.myDomain.com

要求:

  1. 站点 #1 必须能够通过 sub.myDomain.com/handler.ashx 对站点 #2 执行 AJAX 调用。
  2. 网站 #1 和网站 #2 必须能够读取彼此的 Cookie。

这些要求让我提出以下问题:

  1. 位于 sub.myDomain.com/handler.ashx 的处理程序代码是否需要更改其响应 header 以允许 CORS?我知道我可以编写如下调用:

    resp.Headers.Add("Access-Control-Allow-Origin","*");
    

    …但从我读到的内容来看,这会将处理程序暴露给所有域。我只想将调用限制为来自 *.myDomain.com 的调用。如果我根本不包含 CORS header 怎么办?默认行为是什么?

  2. 站点 #1 和/或站点 #2 是否需要调整 HttpCookie 的 Domain 属性才能使两个站点读取彼此的 cookie?

    如果我根本不接触域属性怎么办?默认行为是什么?一些论坛回复建议 cookie 范围将仅限于子域,而其他论坛则建议整个域都在范围内(这就是我想要的),在这种情况下,我不需要采取任何操作。

最佳答案

如果您为属性“Access-Control-Allow-Origin”添加“*”,则表示您允许所有站点调用您的处理程序。

在 www.myDomain.com 处理程序响应中,您必须添加类似的内容

    context.Response.AppendHeader("Access-Control-Allow-Origin",   "sub.myDomain.com");

这样只有 sub.myDomain.con 才能得到 www.myDomain.com 的响应

关于asp.net - 跨子域处理 CORS 和 Cookie 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405438/

相关文章:

asp.net - 选择性验证

java - 在服务器上使用没有 Spring Boot 或 context.xml 的 LegacyCookieProcessor

testing - 如何使用 Mule 测试 CORS

asp.net - 具有多列列表的 ajax 自动完成扩展器

asp.net - 无法找到 asp.net 工作进程

asp.net - Microsoft Jet 数据库引擎找不到对象 'Sheet1$'

javascript - 即使在 httpOnly 标志设置为 false 的开发人员工具中列出了 cookie,访问 document.cookie 也会返回空字符串

JavaScript 设置和获取 cookie?

javascript - 对 cors/ajax 请求的重复 OPTIONS 请求

php - CORS 在 Firefox 中不工作