【问题标题】:CORS Authorization polymer and goapp golangCORS 授权聚合物和goapp golang
【发布时间】:2017-10-21 12:20:53
【问题描述】:

我有与 goapp 服务器交互的聚合物前端。只要我不在标头中传递授权令牌,一切正常。这是 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
}

请注意,我从聚合物代码中删除 headers="[[_computeHeader()]]" 然后它可以工作。但是使用授权令牌会引发以下错误。

XMLHttpRequest 无法加载 http://localhost:8080/ephomenotes。回复 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8081” 访问。

请帮忙

【问题讨论】:

    标签: google-app-engine go cors polymer


    【解决方案1】:

    解决了问题..

    为选项创建新路线

    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")
    
    }
    

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

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多