【发布时间】:2013-04-12 01:14:18
【问题描述】:
我已将我的 WebApi 项目分为一个 MVC 项目 (http://mydomain.com) 和一个 WebApi 项目 (http://api.mydomain.com)。
我的 MVC 项目只管理身份验证和服务视图(使用 knockoutJS 和 ajax)。
我的问题是,当从 webapi 域请求信息时(使用 ajax),没有发送来自 MVC 项目的 cookie。或者更确切地说,在测试期间,我在不同部分使用了两个 IIS Express 服务器。
该项目稍后将部署到 Azure,因此任何解决方案都必须在两个网站之间运行。
那么我怎样才能让这些 cookie 被发送出去呢?还是我应该改用某种令牌?
编辑
在我将 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
【问题讨论】:
标签: asp.net-web-api cookies cross-domain