我在这里有相当简单的设置,如下面的代码所述。但我无法让 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)))
}
原文由 Moon 发布,翻译遵循 CC BY-SA 4.0 许可协议
请阅读 Markus 建议的链接,以及有关触发 CORS 飞行前请求的内容。
飞行前请求:您可能有像 JSON 这样的内容类型,或一些其他触发飞行前请求的自定义标头,您的服务器可能不会处理这些请求。如果您在前端使用最常见的 AJAX,请尝试添加这个: https ://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requested-With
Gorilla 的
handlers.CORS()
将设置合理的默认值,让 CORS 的基础知识为你工作;但是,您可以(也许应该)以更实用的方式进行控制。这是一些入门代码: