gpt4 book ai didi

google-app-engine - CORS 授权 polymer 和 goapp golang

转载 作者:IT王子 更新时间:2023-10-29 01:41:31 24 4
gpt4 key购买 nike

我有与 goapp 服务器交互的 polymer 前端。只要我不在 header 中传递授权 token ,一切都可以正常工作。这是 Polymer 端的代码

<iron-ajax
auto
url="http://localhost:8080/ephomenotes"
handle-as="json"
last-response="{{response}}"
headers="[[_computeHeader()]]"
debounce-duration="300"></iron-ajax>

_computeHeader() {
var token = localStorage.getItem("savedToken");
var obj = {};
obj.Authorization = "Bearer " + token;
return obj;
//return {"Authorization": "Bearer " + token};
}

在golang服务器端

w.Header().Set("Access-Control-Allow-Credentials", "true")
if origin := r.Header.Get("Origin"); origin != "" {
w.Header().Set("Access-Control-Allow-Origin", origin)
}
w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")

if r.Method == "OPTIONS" {
return
}

请注意,我从 polymer 代码中删除了 headers="[[_computeHeader()]]"然后它就可以工作了。但是使用授权 token 时它会抛出以下错误。

XMLHttpRequest cannot load http://localhost:8080/ephomenotes. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8081' is therefore not allowed access.

请帮忙

最佳答案

解决了这个问题..

为选项创建新路线

r.OPTIONS("/ephomenotes", optionsheader)
r.GET("/ephomenotes", env.EPHomePage)

这是新功能。

func optionsheader(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {

w.Header().Set("Access-Control-Allow-Credentials", "true")
if origin := r.Header.Get("Origin"); origin != "" {
w.Header().Set("Access-Control-Allow-Origin", origin)
}
w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
// w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")

}

但是我不确定,为什么这个有效?

关于google-app-engine - CORS 授权 polymer 和 goapp golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com