首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Cookie不能仅发送到API主机上的API端点?

为什么Cookie不能仅发送到API主机上的API端点?
EN

Stack Overflow用户
提问于 2019-05-28 06:09:38
回答 1查看 749关注 0票数 1

我的API有身份验证端点A,它应该返回身份验证cookie。端点B需要身份验证cookie。在访问端点A之后,我的开发机器和单独的测试客户端机器在访问Chrome中的端点B(在实时VM上,不涉及localhost )时总是成功地进行身份验证。我可以在发送到端点B的请求中看到cookie头。

同时,当从托管VM本身访问实时端点B时,身份验证看似成功,但是当尝试访问端点B时,Chrome被重定向。日志记录指示身份验证cookie未在请求中发送到端点B。

我的开发机器和VM在使用Postman时都会收到SSL CookieSSL头作为响应(我必须在两台机器上禁用验证才能正常工作)。

cookie看起来是这样的,尽管我也尝试过不使用domain、secure和samesite策略(逐渐地):

代码语言:javascript
复制
cName=cValue; expires=Tue, 11 Jun 2019 02:21:06 GMT; domain=.mydomain.net; path=/; secure; samesite=lax

问题:什么可以阻止虚拟机上的Chrome发送cookie?我已经尝试调整cookie的属性,以防这是问题所在。

Context

cookie CORS核心版本: 2.2

  • Cookie.httpOnly: false

  • Cookie.SameSite:我尝试了None和Lax,因为cookie是从chrome extension.

  • Cookie.Secure:请求的,我尝试了true和false.

  • Cookie.Domain:,我尝试了多个值,但没有设置。使用的是

  • asp.net。

  • I已为该站点安装了受信任的SSL证书。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 12:00:18

我需要学习一些CORS的东西来实现我的目标。我发现了一个非常有用的msdn article。简而言之,为了满足浏览器的要求并接受服务器上的请求,需要对客户端和服务器进行以下更改。

这直接导致了我的问题:

为了不忽略响应中的身份验证cookie,必须在客户端将

  • XMLHttpRequest.withCredentials设置为true。必须在Startup.cs的Configure()中调用(paragraph 2).
  • CorsPolicyBuilder.AllowCredentials(),才能接收该withCredentials请求。

奇怪的是,如果没有它,它在任何地方都能正常工作,除了托管服务器,我仍然无法解释这一点。

我需要纠正的其他烦人的细节可能会掩盖这个问题:

  • Cookie的域必须针对用例进行适当设置
  • Cookie的SameSite属性必须为Lax
  • UseCors()
  • CorsPolicyBuilder.WithOrigins(new string[] {“

-a”,Lax

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56332927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档