Может ли посол обрабатывать запросы CORS? - PullRequest
7 голосов
/ 31 мая 2019

Извините, если это очень невежественный вопрос, но может ли посол по-настоящему работать с заголовками CORS и ответами OPTION перед полетом?

Документы (https://www.getambassador.io/reference/cors) кажутся мне двусмысленными, если есть только ловушки для предотвращения запросов или если он действительно может отвечать от имени служб.

Вот моя ситуация: посол перед всеми http-запросами к некоторым микросервисам. По [причинам] нам сейчас нужен отдельный домен для отправки запросов одному и тому же послу.

У меня настроен AuthService, и в соответствии с документацией «Когда вы используете внешнюю авторизацию, каждый входящий запрос аутентифицируется перед маршрутизацией к месту назначения, включая запросы перед полетом OPTIONS». Что имеет смысл, и вот что я вижу. Мой AuthService настроен, чтобы разрешить вещи правильно, и это, кажется, работает. AuthService отвечает соответствующими заголовками, но посол, кажется, просто игнорирует это и заботится только, отвечает ли AuthService 200 или нет. (Что кажется вполне разумным.)

Я аннотировал это на моем посольском модуле:

getambassador.io/config: |
  --- 
  apiVersion: ambassador/v1
  kind:  Module
  name:  ambassador
  config:
    service_port: 8080
    cors:
      origins: [my domain here]
      credentials: true

И это, кажется, не делает то, что я ожидал, а именно, обрабатывает заголовки CORS и перед полетом ... вместо этого он направляет его в службу для обработки всего материала CORS.

1 Ответ

2 голосов
/ 31 мая 2019

Оказывается, указав headers: "Content-Type" в конфигурации cors, все только начинает работать.Видимо, это не так необязательно, как я думал.

Так что теперь это мой модуль:

getambassador.io/config: |
--- 
apiVersion: ambassador/v1
kind:  Module
name:  ambassador
config:
  service_port: 8080
  cors:
    origins: [my domain here]
    headers: "Content-Type"
    credentials: true
...