我在localhost:3000上运行一个CRA React应用程序,该应用程序使用axios,该应用程序对https://api-local.domain.io:3010/xxx/authorize
进行以下API调用,该调用响应标头:
set-cookie: gd_resource=XXX; Domain=.domain.io; Path=/; Expires=Thu, 23 Jun 2022 16:08:05 GMT; Secure; SameSite=None
这个cookie被配置为它将被发送到domain.io
的子域的任何API调用的任何请求。所以应该是Secure
但是我可以看到,当API调用被发送到https://project-dev.domain.io/yyy
时,它没有被发送。
我不明白为什么,是因为我在HTTP上运行应用程序吗?
我试着在http://editor-local.domain.io:3000
上运行它,改变我的/etc/hosts
文件,但它没有改变任何东西。
我已经尝试使用mkcert在https://localhost:3000
上运行应用程序,但Chrome说证书无效,尽管我的钥匙链似乎没问题。
编辑
我设法让我的应用程序运行在https://editor-local.domain.io:3000
与mkcert,但它不改变一件事:cookie仍然没有发送请求
事情是这样的:axios请求的参数withCredentials: true
有两个函数:
- 它告诉axios发送可用的cookie;
- 它还告诉浏览器保存响应的
set-cookie
头中返回的cookie。
所以我对https://api-local.domain.io:3010/xxx/authorize
的请求必须与withCredentials: true
一起提出。