ラムダ関数をポイントするようにAPI Gatewayを設定しました。aws_proxy
。 GET、POST、DELETEは問題なくできますが、PUTを追加しようとするとMethod PUT is not allowed by Access-Control-Allow-Methods in preflight response
。
XMLHttpRequestを読み込めません https://api.small.pictures/picture/07e78691-20f9-4a20-8be5-458eaeb73a6 。メソッドPUTは、プリフライト応答のAccess-Control-Allow-Methodsでは許可されていません。
CORSは適切に設定されていると思います。これがルートのswaggerユーザーです。
'/picture/{picId}':
options:
summary: CORS support
description: |
Enable CORS by returning correct headers
consumes:
- application/json
produces:
- application/json
tags:
- CORS
x-Amazon-apigateway-integration:
type: mock
requestTemplates:
application/json: |
{
"statusCode" : 200
}
responses:
"default":
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Allow-Headers : "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"
method.response.header.Access-Control-Allow-Methods : "'*'"
method.response.header.Access-Control-Allow-Origin : "'*'"
responseTemplates:
application/json: |
{}
parameters:
- name: picId
in: path
required: true
type: string
responses:
200:
description: Default response for CORS method
headers:
Access-Control-Allow-Headers:
type: "string"
Access-Control-Allow-Methods:
type: "string"
Access-Control-Allow-Origin:
type: "string"
x-Amazon-apigateway-any-method:
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
x-swagger-router-controller: main
x-lambda-function: ../../swiki/build/picture
x-Amazon-apigateway-integration:
type: aws_proxy
httpMethod: POST
uri: arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/@@LambdaFunctionPicture/invocations
credentials: @@APIGatewayExecutionRole
ご覧のとおり、私はAccess-Control-Allow-Headers
、Access-Control-Allow-Methods
およびAccess-Control-Allow-Origin
構成されました。
PUTリクエストを作成できないのはなぜですか?
現在、許可されているメソッドに「*」を設定することは、ほとんどのブラウザーでサポートされていないようです。したがって、ブラウザのサポートを実現するには、メソッドを手動で明示的に設定する必要があります。
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS
互換性ノート
最新の仕様に記載されているワイルドカード値(*)は、ブラウザーにはまだ実装されていません。
Chromium:問題615313
Firefox:バグ1309358
サーボ:問題13283