반응형
아래와 같은 형식으로 응답하는 lambda 함수가 있었다.
이 lambda 함수는 API Gateway v2와 연결되어 동작한다.
'use strict';
module.exports = (statusCode, body, additionalHeaders = null) => {
const headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true,
'Access-Control-Allow-Headers': 'type, token, uid, Content-Type',
'Access-Control-Allow-Methods': 'OPTIONS,POST,GET',
...additionalHeaders
};
return {
statusCode,
headers,
body: JSON.stringify(body)
}
}
분명히 헤더에 CORS를 허용하기 위한 항목들을 넣어주었음에도 불구하고
클라이언트단에서 요청시 프리플라이트가 정상적으로 반응하지 않았다.
원인은 프리플라이트 요청(OPTION)은 lambda까지 가지 않고 API Gateway단에서 처리되기 때문이었다.
따라서 API Gateway의 설정을 변경하여 OPTION 요청을 처리할 수 있도록 하여야 한다.
https://www.serverless.com/framework/docs/providers/aws/events/http-api/#cors-setup
아래와 같이 serverless.yml의 provider 블록을 수정하였다.
provider:
name: aws
runtime: nodejs16.x
region: ap-northeast-2
stage: ${opt:stage, 'dev'}
httpApi:
cors:
allowedOrigins:
- http://localhost:3000
allowedHeaders:
- Content-Type
allowedMethods:
- GET
- POST
allowCredentials: true
exposedResponseHeaders:
- Special-Response-Header
maxAge: 6000
반응형
'버그와 삽질' 카테고리의 다른 글
[serverless framework] custom domain 연결 삽질기 (0) | 2022.08.22 |
---|---|
AWS 비용감소 후기 (0) | 2022.08.19 |
serverless framework에 IAM 최소 권한 부여하기 (0) | 2022.08.17 |
[해결책] 대신증권 CYBOSPLUS 작업스케쥴러 등록시 동작 안함 (2) (0) | 2022.02.28 |
대신증권 CYBOSPLUS 작업스케쥴러 등록시 동작 안함 (1) (0) | 2022.02.28 |