How to handle preflight CORS requests on a Go server

前端 未结 5 896
时光说笑
时光说笑 2020-12-09 01:48

So I\'m writing this RESTful backend in Go, which will be called with cross-site HTTP requests, i.e. from content served by another site (actually, just another port, but th

5条回答
  •  醉话见心
    2020-12-09 02:10

    Here's a snippet that worked for me:

    addCorsHeader(res)
    if req.Method == "OPTIONS" {
        res.WriteHeader(http.StatusOK)
        return
    } else {
        h.APIHandler.ServeHTTP(res, req)
    }
    
    
    func addCorsHeader(res http.ResponseWriter) {
        headers := res.Header()
        headers.Add("Access-Control-Allow-Origin", "*")
        headers.Add("Vary", "Origin")
        headers.Add("Vary", "Access-Control-Request-Method")
        headers.Add("Vary", "Access-Control-Request-Headers")
        headers.Add("Access-Control-Allow-Headers", "Content-Type, Origin, Accept, token")
        headers.Add("Access-Control-Allow-Methods", "GET, POST,OPTIONS")
    }
    

提交回复
热议问题