AWS API Gateway CORS问题 - JS

时间:2018-03-13 05:41:01

标签: javascript cors

我遇到了CORs请求的问题,我不知道我做错了什么。

我使用以下代码发布到我在AWS中的API网关,并返回时出现以下错误:“请求标头字段Access-Control-Allow-Origin在预检响应中不允许使用Access-Control-Allow-Origin 。“

但是在我的预检响应中,它的Access-Control-Allow-Origin是'*'

这是我的JS代码:

<input type="button" id="click" value="Click Me">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>

    $(document).ready(function(){

    var settings = {
          "async": true,
          "crossDomain": true,
          "url": url,
          "method": "POST",
          "headers": {
            "Access-Control-Allow-Origin": "*",
            "Cache-Control": "no-cache"
        }
    }

        $("#click").click(function() {
            $.ajax(settings).done(function (response) {
                alert(response);
            });
        });
    });

</script>

<p id='test'></p>

非常感谢任何帮助。

谢谢! PON

编辑:

添加了一整套请求和响应

一般

.   Request URL: https://apikey.execute-api.ap-southeast-2.amazonaws.com/
.   Request Method: OPTIONS
.   Status Code: 200 
.   Remote Address: 54.230.135.63:443
.   Referrer Policy: no-referrer-when-downgrade

响应标头

.   access-control-allow-headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
.   access-control-allow-methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT
.   access-control-allow-origin: *
.   content-length: 0
.   content-type: application/json
.   date: Wed, 14 Mar 2018 05:54:46 GMT
.   status: 200
.   via: 1.1 d112d3017705f4a4c66a2958899eb08b.cloudfront.net (CloudFront)
.   x-amz-cf-id: 97nK6qkoiCsMa6TvJvWGUYEevT2bWE4nlKcM8P8sthVeIk9E2BPN9Q==
.   x-amzn-requestid: 33279618-274c-11e8-97da-ffa5e9493919
.   x-cache: Miss from cloudfront

请求标题

.   :authority: apikey.execute-api.ap-southeast-2.amazonaws.com
.   :method: OPTIONS
.   :path: /outageCheck?test=test
.   :scheme: https
.   accept: */*
.   accept-encoding: gzip, deflate, br
.   accept-language: en-GB,en-US;q=0.9,en;q=0.8
.   access-control-request-headers: access-control-allow-origin,cache-control
.   access-control-request-method: POST
.   origin: http://127.0.0.1:62332
.   user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36

控制台错误:

无法加载https://apikey.execute-api.ap-southeast-2.amazonaws.com/outageCheck?test=test:请求标头字段Access-Control-Allow-Origin在预检响应中不允许使用Access-Control-Allow-Origin。

1 个答案:

答案 0 :(得分:0)

这篇文章应该可以帮助您在API网关上启用CORS

https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

  
      
  1. 登录API网关控制台   https://console.aws.amazon.com/apigateway

  2.   
  3. 在API网关控制台中,选择API下的API。

  4.   
  5. 在“资源”下选择资源。这将为所有人提供CORS   关于资源的方法。或者,您可以选择要启用的资源下的方法   CORS就是这种方法。

  6.   
  7. 从“操作”下拉菜单中选择“启用CORS”。

         
        
    • 选择启用CORS
    •   
  8.   
  9. 在启用CORS表单中,执行以下操作:

         
        
    • Access-Control-Allow-Headers输入字段中,键入静态字符串   客户端必须提交的以逗号分隔的标头列表   资源的实际请求。使用控制台提供的标头   清单   Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token   或指定您自己的标题。

    •   
    • 使用控制台提供的&#39; *&#39;作为   Access-Control-Allow-Origin标头值允许来自的访问请求   所有域,或为来自的所有访问请求指定命名域   指定域名。

    •   
    • 选择启用CORS并替换现有的CORS标头。

    •   
  10.   
  11. 在确认方法更改中,选择是,将现有值覆盖到   确认新的CORS设置。

  12.