通过 SAM 创建 API 时,Access-Control-Allow-Headers 不允许在预检响应中请求 header 字段 content-type
Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response when creating API through SAM
我正在使用 SAM 模板创建 Rest APIs。
我正在通过 Postman 测试这些 APIs,一切都按预期工作,但是当我将这些 APIs 集成到我的应用程序中时,我收到了这个错误:
from origin 'http://localhost:3033' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
这仅适用于 PUT、POST 和 PATCH 方法。 GET 方法工作正常。
我在代码 return 部分添加了以下内容:
return {
"statusCode": 200,
"headers": {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "*"},
"body": json.dumps(item)
}
但是,错误仍然出现。
我创建了一个 API 和 lambda 来为控制台提供相同的功能,它在应用程序中运行良好。
这是我创建 API:
的 SAM 代码
ApiGatewaySignUpFlowUserApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_signup
StageName: Stage
Cors: "'*'"
CreateUserSignup:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_create_user_signup
CodeUri: createUserSignup/
Handler: create_user_signup.lambda_handler
Timeout: 5
Runtime: python3.8
Role: arn:aws:iam::272075499248:role/loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /create-user
Method: post
RestApiId:
Ref: ApiGatewaySignUpFlowUserApi
我真的不明白这里可能出了什么问题。谁能帮我解决这个问题?
将 API 定义更改为以下帮助我解决了问题:
ApiGatewaySignUpFlowUserApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_signup
StageName: Stage
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
明确指定 CORS 规则有帮助。
我正在使用 SAM 模板创建 Rest APIs。
我正在通过 Postman 测试这些 APIs,一切都按预期工作,但是当我将这些 APIs 集成到我的应用程序中时,我收到了这个错误:
from origin 'http://localhost:3033' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
这仅适用于 PUT、POST 和 PATCH 方法。 GET 方法工作正常。
我在代码 return 部分添加了以下内容:
return {
"statusCode": 200,
"headers": {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "*"},
"body": json.dumps(item)
}
但是,错误仍然出现。
我创建了一个 API 和 lambda 来为控制台提供相同的功能,它在应用程序中运行良好。
这是我创建 API:
的 SAM 代码ApiGatewaySignUpFlowUserApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_signup
StageName: Stage
Cors: "'*'"
CreateUserSignup:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_create_user_signup
CodeUri: createUserSignup/
Handler: create_user_signup.lambda_handler
Timeout: 5
Runtime: python3.8
Role: arn:aws:iam::272075499248:role/loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /create-user
Method: post
RestApiId:
Ref: ApiGatewaySignUpFlowUserApi
我真的不明白这里可能出了什么问题。谁能帮我解决这个问题?
将 API 定义更改为以下帮助我解决了问题:
ApiGatewaySignUpFlowUserApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_signup
StageName: Stage
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
明确指定 CORS 规则有帮助。