asp.net-web-api - WebApi和MVC在不同的项目中,共享cookies吗?

标签 asp.net-web-api cookies cross-domain

我已将 WebApi 项目分为 MVC 项目 ( http://mydomain.com ) 和 WebApi 项目 ( http://api.mydomain.com )。

我的 MVC 项目仅管理身份验证并为 View 提供服务(使用 knockoutJS 和 ajax)。

我的问题是,当从 webapi 域请求信息时(使用 ajax),不会发送来自 MVC 项目的 cookie。或者更确切地说,在测试期间我在不同部分使用两个 IIS Express 服务器。

该项目稍后将部署到 Azure,因此任何解决方案都必须在两个网站之间运行。

那么我怎样才能让这些cookies被发送呢?或者我应该改用某种 token ?

编辑

它一直有效,直到我将 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

最佳答案

当您设置 cookie 时,您还设置了 cookie 应应用于哪些域名。
Cookie 仅依赖于域名(以及可选的路径);不在您拥有的服务器类型上。

就您而言,您可以将域设置为 .mydomain.com,这是一个通配符 Cookie,将发送到根域和所有子域。

关于asp.net-web-api - WebApi和MVC在不同的项目中,共享cookies吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091147/

相关文章:

jquery - 使用jquery获取子域html页面

iframe - iframe 中从子级到父级的跨域访问

c# - 为什么ASP Net Core 2.2不释放内存?

azure - 使用环境变量为 Entity Framework 6 设置数据库上下文

Angular 2 SyntaxError : Unexpected token < in JSON at position 0 at JSON. 解析(<匿名>)

c# - 在 Controller ApiController 上未找到任何操作

ruby-on-rails - 为什么我得到未定义的方法 `cookies' ?

php - 无法登录 TeSTLink - 未保存 session /cookie

javascript - jQuery 无法使用 jquery.cookie 插件读取 cookie

javascript - 如何理解页面是否使用 javascript 作为 iframe(外部站点)加载?