У меня есть бэкэнд, который выставляет обычный 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.`);
})
Как я могу решить эту проблему?