使golang Gorilla CORS处理程序正常工作

我在这里的设置非常简单,如下面的代码所述。但是我无法CORS上班。我不断收到此错误:

XMLHttpRequest无法加载http:// localhost:3000 /

signup。对预检请求的响应未通过访问控制检查:在请求的资源上不存在“ Access-

Control-Allow-Origin”标头。因此,不允许访问源’ http://

localhost:8000 ‘。响应的HTTP状态码为403。

我确定我在这里缺少一些简单的东西。

这是我的代码:

package main

import (

"log"

"net/http"

"github.com/gorilla/handlers"

"github.com/gorilla/mux"

"myApp/src/controllers"

)

func main() {

ac := new(controllers.AccountController)

router := mux.NewRouter()

router.HandleFunc("/signup", ac.SignUp).Methods("POST")

router.HandleFunc("/signin", ac.SignIn).Methods("POST")

log.Fatal(http.ListenAndServe(":3000", handlers.CORS()(router)))

}

回答:

请阅读Markus建议的链接,以及有关触发CORS飞行前请求的原因。

:您可能具有类似JSON的内容类型,或其他一些触发飞行前请求的自定义标头,而服务器可能未处理该请求。如果您在前端使用常见的AJAX,请尝试添加此代码:https : //en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requested-

With

大猩猩handlers.CORS()会设置合理的默认值,以使CORS的基础知识为您服务;但是,您可以(也许应该)以更加实用的方式进行控制。

回答:

// Where ORIGIN_ALLOWED is like `scheme://dns[:port]`, or `*` (insecure)

headersOk := handlers.AllowedHeaders([]string{"X-Requested-With"})

originsOk := handlers.AllowedOrigins([]string{os.Getenv("ORIGIN_ALLOWED")})

methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

// start server listen

// with error handling

log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), handlers.CORS(originsOk, headersOk, methodsOk)(router)))

以上是 使golang Gorilla CORS处理程序正常工作 的全部内容, 来源链接: utcz.com/qa/398475.html

回到顶部