Swagger Hub `Try it out` возвращает TypeError: Не удалось получить локальный хост при использовании опции браузера - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь протестировать документацию по API в формате openapi: 3.0.1.При попытке выполнить конечные точки из документации Swagger Hub, я получаю TypeError: Failed to fetch.

Показанная команда curl отлично работает с терминала:

curl -X GET "http://localhost:3030/services" -H "accept: application/json; charset=UTF-8"

Проблема касается как браузеров Safari, так и браузеров Chrome.

Я также включил 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 голосов
/ 12 октября 2018

«Не удалось получить» означает, что CORS настроен неправильно.В частности,

allowedOrigins := handlers.AllowedOrigins([]string{"*"})

означает, что ваш сервер всегда возвращает

Access-Control-Allow-Origin: *

, но согласно документации SwaggerHub вы должны вернуть

Access-Control-Allow-Origin: https://app.swaggerhub.com
Vary: Origin

Access-Control-Allow-Origin

Значение этого заголовка должно быть установлено следующим образом:

  • Если запрос содержитнепустой заголовок Origin (как в случае запросов, отправленных из браузера, таких как запросы «попробуйте»), вернуть этот источник вместе с заголовком Vary: Origin:

    Access-Control-Allow-Origin: https://host.from.which.the.request.came
    Vary: Origin
    
  • Если в запросе нет Origin, верните подстановочный знак *:

    Access-Control-Allow-Origin: *
    
...