【发布时间】:2020-10-19 22:44:16
【问题描述】:
我尝试观看 this one 和 this link 等视频。非常相似的question here
我尝试了如下代码:
func articlesHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type,access-control-allow-origin, access-control-allow-headers")
// var cookie, err = r.Cookie("session_id")
// // cookie not set
// if err != nil {
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := &http.Cookie{Name: "session_id", Value: "123123", Expires: expiration}
http.SetCookie(w, cookie)
// }
if r.Method == http.MethodGet {
articles := Articles{
Article{Title: "Title 1", Desc: "Desc 1"},
Article{Title: "Title 2", Desc: "Desc 2"},
}
query := r.URL.Query()
fmt.Println("All Article ENdpoint Hit with ", query.Get("id"))
json.NewEncoder(w).Encode(articles)
}
if r.Method == http.MethodPost {
formData := r.FormValue
fmt.Println("Post call ", formData("id"))
json.NewEncoder(w).Encode("Success")
}
}
我可以在 Response Header
中看到但我仍然无法在我的开发工具中看到它 ---> 应用程序
因此,我的服务器无法检测到现有的
cookie值。请帮忙
【问题讨论】:
-
大多数浏览器不允许在
localhost上设置 cookie,也不允许在一个站点对另一个站点的响应中设置 cookie;您向 127.0.0.1:8080 发出请求,响应尝试在 localhost:4200 上设置 cookie。 -
@Adrian:这是否意味着我无法在 localhost 上测试与
cookie相关的任何功能? :( 我在8080上运行后端,在4200上运行前端应用程序。有什么解决方法吗? -
您不能在
localhost上设置cookies,但您可以在127.0.0.1或分配给您机器的任何其他IP 或您映射到主机文件中IP 的任何主机名上设置cookie。至于端口 - 您通常只能在使用Set-Cookie标头响应的主机上设置 cookie,包括端口。因此,如果您将单独的 cookie 与前端和后端关联,并且两者都无法读取/写入对方的 cookie。 -
请使用 Max-Age 而不是 Expires。现在是 2020 年而不是 1990 年。
-
这是一个 JavaScript 问题,不是 Go 的问题:developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/…