0

我正在尝试在聚合物应用程序中的 Iron-ajax 客户端上设置一个 api 密钥,以使用 Amazon Web Services 的 API 网关端点。在服务器端(API 网关),我在 cors 上启用了通配符,还启用了 x-api-key 作为标头并授予凭据。当我运行我的客户端时,我总是在 Chrome 中得到相同的响应:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:8080 ”。响应具有 HTTP 状态代码 403。

网络响应是 {"message": "Forbidden"}

我尝试了以下代码,以多种方式更改了内容,但我什么也没得到。

    <iron-ajax
      id="requestOpensource"
      url='https://myservice.execute-api.eu-west-1.amazonaws.com/development/myservice'
      method='GET'
      headers = "{{ajaxParams}}"
      handle-as="json"
      content-type="application/json"
      on-response="handleResponse"
      with-credentials="true"
      on-error="handleErrorResponse">
    </iron-ajax>
  </template>

  <script>
    Polymer({
      is: 'my-view1',
      properties: {
        response: {
          type: Object
        },
        apikey: {
          type: String,
          value: '12345'
        },
        ajaxParams: {
          type: String,
          computed: 'processParams(apikey)'
        },
        headers: {
          type: Object,
          computed: 'getHeaders(customHeader)'
        },
        customHeader: {
          value: '12345'
        }
      },
      getHeaders: function(customHeader) {
        return {'X-API-Key': customHeader}
      },
      processParams: function(apikey) {
        return {
          key: apikey
        }
      },
      ready: function () {
        debugger
        this.$.requestOpensource.headers['x-api-key'] = "12345"
        //this.$.requestOpensource.headers['Access-Control-Allow-Origin'] = "*"
        this.$.requestOpensource.generateRequest()
      }
  </script>

我还使用 chrome 插件来启用 cors,但这对我的客户来说不是一个好的解决方案(而且我也得到了相同的响应)。我认为问题在于没有正确设置标题上的数据。但是我阅读了多个论坛,我不知道下一步该做什么。

非常感谢您的回复!

4

0 回答 0