我已将 WebApi 项目分为 MVC 项目 ( http://mydomain.com ) 和 WebApi 项目 ( http://api.mydomain.com )。
我的 MVC 项目只管理身份验证和服务视图(使用 knockoutJS 和 ajax)。
我的问题是,当从 webapi 域(使用 ajax)请求信息时,没有发送来自 MVC 项目的 cookie。或者更确切地说,在测试期间,我在不同部分使用了两个 IIS Express 服务器。
该项目将在稍后部署到 Azure,因此任何解决方案都必须在两个网站之间运行。
那么我怎样才能让这些cookies通过呢?还是我应该改用某种令牌?
编辑
它一直有效,直到我添加contentType
到$.ajax
请求中。然后我得到了 CORS 预检选项。我用我认为正确的标题回答了 200。如果我删除该选项,我会再次收到包含所有 cookie 的工作请求。
作品
$.ajax({
url: "http://localhost:54304/Organization/",
type: "POST",
data: "$top=10",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (data) { console.log(data); }
});
不工作:
$.ajax({
url: "http://localhost:54304/Organization/",
contentType: 'application/json', //<--- this triggers preflight
type: "POST",
data: "$top=10",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (data) { console.log(data); }
});
现在这是一个 jquery“功能”还是 CORS 的工作原理?我应该设置哪些标题?我试图回复:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:51343