語言用的go,前端是vue+axios 。 用的路由框架,遇到了CORS問題
github.com/julienschmidt/httprouter
在說明里面看到有設置 CORS問題的方式,設置了后本地實測不起作用。
header := w.Header() header.Set("Access-Control-Allow-Methods", header.Get("Allow")) header.Set("Access-Control-Allow-Origin", "*")
看到有人設置如下,就copy進去了(感謝:https://studygolang.com/articles/20014)
c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token") c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS") c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type") c.Header("Access-Control-Allow-Credentials", "true")
設置完,居然好用了。經過排除法。發現我這里只要如下設置就可以用。。
header.Set("Access-Control-Allow-Methods", header.Get("Allow")) header.Set("Access-Control-Allow-Origin", "*") header.Set("Access-Control-Allow-Headers", "Content-Type")
我前端請求頭用的是
axios({url: httpPostStructure.getServiceUrl(), method: "POST", timeout: 10000, headers: {"Content-Type": "application/json"}, data: data,})
沒錯,標紅的位置與上面golang的設置要對應。 如果不對應就會報錯給你看。
