Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 来自子域A的Cookie未发送到子域B_Angular_Http_Cookies_Session Cookies_Httpcookie - Fatal编程技术网

Angular 来自子域A的Cookie未发送到子域B

Angular 来自子域A的Cookie未发送到子域B,angular,http,cookies,session-cookies,httpcookie,Angular,Http,Cookies,Session Cookies,Httpcookie,我有一个前端Angle应用程序,它托管在dev.subdomain.mydomain.com上。应用程序向托管在dev.API.mydomain.com上的.net核心API发出HTTP请求。我的angular应用程序有一个与之关联的会话cookie,该cookie具有以下安全属性: Secure=true HttpOnly=true SameSite=None Domain=.mydomain.com 我希望cookie在每次请求时都被发送到后端服务器,但由于某些原因,请求在没有cookie

我有一个前端Angle应用程序,它托管在
dev.subdomain.mydomain.com
上。应用程序向托管在
dev.API.mydomain.com
上的.net核心API发出HTTP请求。我的angular应用程序有一个与之关联的会话cookie,该cookie具有以下安全属性:

Secure=true
HttpOnly=true
SameSite=None
Domain=.mydomain.com
我希望cookie在每次请求时都被发送到后端服务器,但由于某些原因,请求在没有cookie的情况下被发送

我添加了一个角度拦截器,它将
with credentials
选项添加到传出请求中

req = req.clone({
       headers: req.headers.set('Content-Type', 'application/json'),
       withCredentials: true
});
但这也没用。在Chrome和Firefox中测试了这一点,结果相同

Update:
我注意到cookie确实会在初始http请求中发送(到服务器获取angular应用程序),但是使用
httpClient的ajax请求不会与cookie一起发送

update2:
我已经设置了API,以便在飞行前响应中包含以下标题:

Access-Control-Allow-Origin: https://dev.subdomain.mydomain.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type,withcredentials
Access-Control-Allow-Methods: GET

Cookie仍然没有被发送。

如果前端和API都在
*.mydomain.com
下,那么它们应该算作同一个站点,这意味着
SameSite=Lax
应该可以

如果您查看Chrome Developer工具,那么问题选项卡应该会告诉您任何受
SameSite
默认值影响或属性设置不正确的cookie

在“网络”选项卡中,如果选择单个请求,则还可以查看Cookies子面板,并启用“显示筛选出的请求Cookies”以显示删除了哪些Cookies。将鼠标悬停在它们上方还将提供一个工具提示来解释原因

  • 此处有深入调试指南:
  • 视频版本在此:

如果前端和API都在
*.mydomain.com
下,那么它们应该算作同一个站点,这意味着
SameSite=Lax
应该可以

如果您查看Chrome Developer工具,那么问题选项卡应该会告诉您任何受
SameSite
默认值影响或属性设置不正确的cookie

在“网络”选项卡中,如果选择单个请求,则还可以查看Cookies子面板,并启用“显示筛选出的请求Cookies”以显示删除了哪些Cookies。将鼠标悬停在它们上方还将提供一个工具提示来解释原因

  • 此处有深入调试指南:
  • 视频版本在此:

Cookies实际上应该只在前端使用。服务器端的cookie究竟是什么?它是会话cookie。我使用它来通过后端安全系统识别用户难道Oauth令牌不是比尝试使用cookie更好的解决方案吗?我们使用这个icookie n与jwt令牌的组合。这是一个遗留系统,我们正在努力解决这个问题。我的问题是我需要将cookie发送到服务器,我觉得这不是一个罕见的场景,cookie应该只在前端使用。服务器端的cookie究竟是什么?它是会话cookie。我使用它来通过后端安全系统识别用户难道Oauth令牌不是比尝试使用cookie更好的解决方案吗?我们使用这个icookie n与jwt令牌的组合。这是一个遗留系统,我们正在努力解决这个问题。我的问题是我需要将cookie发送到服务器,我觉得这种情况并不少见