我有以下情况:
我在通话中设置了一个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
我做错了什么?