【问题标题】:CORS not working even though OPTIONS returns HTTP 200即使 OPTIONS 返回 HTTP 200,CORS 也不起作用
【发布时间】:2017-11-09 20:49:35
【问题描述】:

我正在使用 chi 并且设置 cors 如下

func main() {
    r := chi.NewRouter()
    r.Use(render.SetContentType(render.ContentTypeJSON))
    r.Use(Cors)

    r.Post("/auth/login", Login)
    r.Route("/ec2", func(r chi.Router) {
        r.Use(Cors)
        r.Get("/", ListEc2)
    })

    http.ListenAndServe(":9000", r)
}

我的Cors 中间件

func Cors(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Allow-Control-Allow-Origin", "*")
        w.Header().Set("Allow-Control-Allow-Methods", "*")
        w.Header().Set("Allow-Control-Allow-Headers", "*")
        w.Header().Set("Allow-Control-Allow-Credentials", "true")
        log.Printf("Should set headers")

        if r.Method == "OPTIONS" {
            log.Printf("Should return for OPTIONS")
            return
        }
        next.ServeHTTP(w, r)
    })
}

在网络标签中它看起来像:

【问题讨论】:

标签: http go cors go-chi


【解决方案1】:

您只是输入了错误的标题名称:

w.Header().Set("Allow-Control-Allow-Origin", "*")
                ^^^^^

你需要 Access-Control,而不是 Allow-Control

w.Header().Set("Access-Control-Allow-Origin", "*")

...当然对于您设置的其他三个标题也是如此。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2019-06-10
    • 1970-01-01
    相关资源
    最近更新 更多