API-шлюз HTTP CORS - PullRequest
       16

API-шлюз HTTP CORS

0 голосов
/ 03 апреля 2020

У меня есть бэкэнд, который выставляет обычный http-сервер на mydomain.com. Я хотел иметь защищенную конечную точку, поэтому я решил создать конечную точку API-шлюза, которая перенаправляет трафик c на конечную точку моего домена.

При этом я теряю все свои заголовки CORS, которые отображаются бэкенд. Поэтому, если отправить запрос непосредственно бэкэнду, я получу следующий ответ, который содержит заголовки CORS:

HTTP/1.1 200 OK
Access-Control-Allow-Methods: OPTIONS, POST, GET
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 300
Connection: keep-alive
Date: Fri, 03 Apr 2020 20:03:03 GMT
Transfer-Encoding: chunked
foo: bar

Hello World

, но когда я запрашиваю конечную точку шлюза API, я получаю следующий ответ:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: text/plain; charset=utf-8
Date: Fri, 03 Apr 2020 20:03:09 GMT
apigw-requestid: KbRzrjEvjoEEMHQ=
foo: bar

Я пытался настроить эти заголовки CORS на панели API Gateway Cors, но безуспешно.

Это часть бэкэнда, когда я настраивал заголовки CORS.

app.addListener('request', (req, res) => {
  const headers = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
    'Access-Control-Max-Age': 300, // 30 days
    'foo': 'bar'
    /** add other headers as per requirement */
  };

  if (req.method === 'OPTIONS') {
    res.writeHead(204, headers);
    res.end();
    return;
  }

  if (['GET', 'POST'].indexOf(req.method) > -1) {
    res.writeHead(200, headers);
    res.end('Hello World');
    return;
  }

  res.writeHead(405, headers);
  res.end(`${req.method} is not allowed for the request.`);
})

Как я могу решить эту проблему?

...