Odpowiedz

18

Po pewnym prób i błędów odkryłem, że następujący szablon CloudFormation fragment będzie produkować równoważną metodę OPTIONS w porównaniu do kreatora konsoli Cors:

OptionsMethod: 
    Type: AWS::ApiGateway::Method 
    Properties: 
    AuthorizationType: NONE 
    RestApiId: 
     Ref: MyApi 
    ResourceId: 
     Ref: MyResourceOnWhichToEnableCORS 
    HttpMethod: OPTIONS 
    Integration: 
     IntegrationResponses: 
     - StatusCode: 200 
     ResponseParameters: 
      method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" 
      method.response.header.Access-Control-Allow-Methods: "'POST,OPTIONS'" 
      method.response.header.Access-Control-Allow-Origin: "'*'" 
     ResponseTemplates: 
      application/json: '' 
     PassthroughBehavior: WHEN_NO_MATCH 
     RequestTemplates: 
     application/json: '{"statusCode": 200}' 
     Type: MOCK 
    MethodResponses: 
    - StatusCode: 200 
     ResponseModels: 
     application/json: 'Empty' 
     ResponseParameters: 
      method.response.header.Access-Control-Allow-Headers: false 
      method.response.header.Access-Control-Allow-Methods: false 
      method.response.header.Access-Control-Allow-Origin: false 

* Uwaga 1: To jest przykładem przyjmowanie wartości domyślnych dla testu POST. Oczywiście musisz zaktualizować Access-Control-Allow-Methods, aby uwzględnić potrzebne wartości.

* Uwaga 2: Pozdrowienia dla zespołu AWS CloudFormation za niedawne wprowadzenie wsparcia dla YAML. Jeśli chcesz przekonwertować do/z YAML/JSON, znalazłem tę stronę pod ręką: http://www.json2yaml.com/

+1

nie powinien booleans na końcu wszystkie są "prawdziwe" zamiast "fałsz"? –

1

Obsługa bramek API dla automatycznej konfiguracji CORS działa obecnie tylko za pośrednictwem konsoli API Gateway. Nadal możesz skonfigurować CORS podczas importowania interfejsu API z obiektu SWAGGER lub podczas definiowania interfejsu API za pośrednictwem CloudFormation, ale musisz podać wszystkie parametry potrzebne do skonfigurowania metody OPTIONS, a także dodać nagłówki CORS do innych metod.

This page pokazuje, jak skonfigurować CORS podczas importowania zbijaka. Konfigurowanie CORS za pośrednictwem CloudFormation jest koncepcyjnie podobne, ale używa składni CloudFormation, a nie składni łobuzerskiej.