为什么Web浏览器未设置cookie?

时间:2019-12-10 13:33:51

标签: go cookies axios

我有以下情况:

  • 在api.company.com上运行的REST API应用程序
  • 在frontend.company.com上运行的前端应用程序,它向api.company.com发出请求,以获取要在前端显示的资源。

我在通话中设置了一个cookie,它似乎在邮递员上正常工作。
我在其中设置Cookie的代码的相关部分是以下内容(在GO中):

expire := time.Now().Add(24 * time.Hour)
cookie := http.Cookie{
    Name:    "Token",
    Value:   "value",
    Expires: expire,
    Domain: "company.com",
}
http.SetCookie(w, &cookie)
w.Write([]byte("The response")

一旦我尝试了邮递员,发现后端按预期方式工作并且正在发送cookie,我也就使用axios库在前端发出了请求。
代码中的相关部分:

http.post(resource, {
    field1,
    field2
}, 
{
    withCredentials: true,
    cancelToken: cancelToken.token,
    headers: {
      Authorization: 'token',
    },

})

我得到了预期的答案,即“响应”字符串,但未在Web浏览器中设置cookie。
打开Chrome控制台并转到“网络”标签,我可以看到Cookie是由后端发送的,但由于某些原因却被网络浏览器拒绝。
我认为这与该域无关,因为它与company.com无关,也与到期时间无关,因为它已定于明天。
响应中的标头如下:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: HEAD, GET, POST, PUT, PATCH, DELETE
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Token, NewToken
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 280
Content-Type: application/json
Date: Tue, 10 Dec 2019 13:12:06 GMT
Set-Cookie: Token="value value"; Domain=api.company.com; Expires=Wed, 11 Dec 2019 13:12:06 GMT
Status: 200
Vary: Origin

我做错了什么?

0 个答案:

没有答案