【发布时间】:2017-06-28 11:33:39
【问题描述】:
我目前正在编写一个安静的网络服务器,我想从 angular2 前端进行测试。由于服务器在开发时托管在另一个域上,我需要Access-Control-Allow-Origin: *(我认为)。我试图通过使用 gorilla handlers 包来实现这一点,即以下内容:
origins := handlers.AllowedOrigins([]string{"*"})
log.Fatal(http.ListenAndServe(":"+os.Getenv(util.Port),
handlers.LoggingHandler(os.Stdout, handlers.CORS(origins)(router))))
现在尝试使用以下 curl 请求服务器时:
curl -H "Origin: http://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: X-Requested-Width" \
-X OPTIONS --verbose localhost:8000
我在服务器上收到一个 OPTIONS 请求,它返回 403。我还尝试添加标头和允许的方法:
handlers.AllowedHeaders([]string{"X-Requested-With"})
handlers.AllowedMethods([]string{"GET", "POST", "PUT", "OPTIONS"})
但这并没有什么不同。我该如何解决这个问题?
【问题讨论】:
-
如果你不能让它工作,stackoverflow.com/questions/12830095/… 的答案似乎是解决它的方法
-
不幸的是这不起作用,因为我也在使用 gorilla mux 路由器并设置函数方法,所以我必须单独包装每个路由
标签: go cross-domain gorilla