Swagger Hub`Try it out`返回TypeError:使用浏览器选项时无法获取本地主机

时间:2018-10-12 05:19:58

标签: swagger swagger-ui

我正在尝试使用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)))

enter image description here

1 个答案:

答案 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通配符:

    *
  •