我正在尝试使用openapi: 3.0.1
格式测试我的API文档。尝试从Swagger Hub文档执行端点时,我得到了TypeError: Failed to fetch
。
显示的curl命令在终端上运行正常:
curl -X GET "http://localhost:3030/services" -H "accept: application/json; charset=UTF-8"
这个问题既适用于Safari浏览器,也适用于Chrome浏览器。
我还按照以下代码片段为golang应用程序启用了CORS:
allowedOrigins := handlers.AllowedOrigins([]string{"*"})
allowedCredentials := handlers.AllowCredentials()
exposedHeaders := handlers.ExposedHeaders([]string{"Content-Length", "ETag", "Link", "X-RateLimit-Limit", "X-RateLimit-Remaining"})
log.Fatal(http.ListenAndServe(":3030", handlers.CORS(allowedOrigins, allowedCredentials, exposedHeaders)(router)))
答案 0 :(得分:1)
“无法获取”表示CORS配置错误。具体来说,
allowedOrigins := handlers.AllowedOrigins([]string{"*"})
表示您的服务器始终返回
Access-Control-Allow-Origin: *
但是根据SwaggerHub documentation,您应该返回
Access-Control-Allow-Origin: https://app.swaggerhub.com
Vary: Origin
访问控制允许来源
此标头的值必须设置如下:
如果请求包含非空的
Origin
标头(例如从浏览器发送的请求,例如“ try it out”请求),则将此原点与{{1 }}标头:Vary: Origin
如果请求中没有
Access-Control-Allow-Origin: https://host.from.which.the.request.came Vary: Origin
,则返回Origin
通配符:*