“受CORS政策的限制”,但出现了标头

时间:2019-12-07 00:22:52

标签: javascript http vue.js go cors

我使用Go和fasthttp创建了一个REST API,并使用Vue创建了一个前端。每当我提出API请求时,我的浏览器控制台都会收到错误Access to XMLHttpRequest at 'http://localhost:55555/auth/login' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource。我唯一没有得到此错误的地方就是/auth/check路线。另外,我向后端提出了一个OPTIONS-Request,并获得了所有的CORS标头。如果我发出POST或GET请求,我不会得到它们,但我不知道为什么。

后端:

webRouter := router.New()

auth := webRouter.Group("/auth")
auth.GET("/check", authCheck)
auth.POST("/login", authLogin)
auth.GET("/logout", authCheck)

err = fasthttp.ListenAndServe(":"+port, func (ctx *fasthttp.RequestCtx) {
    ctx.Response.Header.Set("Access-Control-Allow-Origin", "*")
    ctx.Response.Header.Set("Access-Control-Allow-Headers", "authorization, content-type, set-cookie, cookie, server")
    ctx.Response.Header.Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
    ctx.Response.Header.Set("Access-Control-Allow-Credentials", "false")
    webRouter.Handler(ctx)
})
if err != nil {
    panic(err)
}

前端请求:

axios.create({
    baseURL: 'http://localhost:55555'
}).post('/auth/login', {
    email: this.email,
    password: this.password
}).then(response => {
    console.log(response)
}).catch(err => {
    console.log(err)
})

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。我又读了fasthttp的文档,发现ctx.Error()方法清除了所有标头。相反,我现在手动设置响应代码和错误消息,并且一切正常。