获取不存在“Access-Control-Allow-Origin”标头 AWS api 网关

Posted

技术标签:

【中文标题】获取不存在“Access-Control-Allow-Origin”标头 AWS api 网关【英文标题】:Fetch No 'Access-Control-Allow-Origin' header is present AWS api gateway 【发布时间】:2021-04-14 19:27:13 【问题描述】:

我正在尝试向 AWS API 网关发送一个获取请求,但它一直给我这个错误。我是从 WordPress 的管理员端做的。

访问获取 来自来源“https://mywebsite.online”的“https://34557322456.execute-api.ap-southeast-1.amazonaws.com/V1/code?kdata=something”已被 CORS 阻止 策略:对预检请求的响应未通过访问控制 检查:没有“Access-Control-Allow-Origin”标头出现在 请求的资源。如果不透明的响应满足您的需求,请将 请求模式为“no-cors”以获取禁用 CORS 的资源。

这是请求

fetch('https://34557322456.execute-api.ap-southeast-1.amazonaws.com/V1/code?kdata=something', 
        method: 'GET',
        headers: 
          'Content-Type': 'application/json',
          'Access-Control-Allow-Origin': '*',
        ,
      ).then(response => 
        return response.json()
      )
      .then(data => console.log(data))
      .catch(error => console.log(error));

请帮忙

【问题讨论】:

【参考方案1】:

标头应该在服务器端,在你的 .php 文件中尝试这样的操作:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: 'X-Requested-With,content-type'");
header("Access-Control-Allow-Methods: 'GET, POST, OPTIONS, PUT, PATCH, DELETE'");

【讨论】:

试过这个但没有成功。您的意思是 api 服务器阻止了我还是我的网站阻止了我? 浏览器阻止您,因为响应缺少 Access-Control-Allow-Origin 响应标头。尝试从 fetch 选项中删除标头,您的请求具有“Content-Type:application/json”,并触发了 CORS 预检。 我有一个带有 python 的landa 函数,它从服务器端生成响应。您的意思是 api 生成的响应缺少 Access-Control-Allow-Origin 吗?对不起,如果我听起来很垃圾 那么尝试这样的事情,我没有在 python 中尝试过,但我想这就是你在那里设置标头的方式,来自服务器的响应应该包含标头:***.com/a/50067910/14755337 如果失败则有一个适用于 Chrome 的 CORS 插件,例如:chrome.google.com/webstore/detail/moesif-origin-cors-change/… 应该通过单击启用和禁用 CORS 哈哈,我在响应中启用了该标头,它失败了:(

以上是关于获取不存在“Access-Control-Allow-Origin”标头 AWS api 网关的主要内容,如果未能解决你的问题,请参考以下文章

发送文件返回 405(方法不允许)

获取不存在的文件

在 c# 中,如何测试/获取/设置可能存在或不存在的注册表项?

从可能不存在的 JToken 中获取价值(最佳实践)

CoreData, NSManagedObject 获取或创建(如果不存在)

获取随机码不存在mysql