在提取API中启用CORS

joh*_*nco 13 javascript reactjs fetch-api

我收到以下错误消息,我无法继续

无法加载https://site/data.json:对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问源' http:// localhost:8080 '。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。localhost /:1未捕获(承诺)TypeError:无法获取

我正在尝试CORS在我的react js文件中启用,但无法获得预期的结果。我已经安装了chrome扩展程序,并且可以正常工作。但是要在生产站点中使用它,我需要在代码中启用它。我应该如何正确安排代码以启用CORS

fetch(URL, {
  mode: 'cors',
  headers: {
    'Access-Control-Allow-Origin':'*'
  }
})
  .then(response => response.json())
  .then(data => {
Run Code Online (Sandbox Code Playgroud)

Kis*_*dha 10

浏览器在客户端具有跨域安全性,可验证服务器是否允许从您的域中获取数据。如果Access-Control-Allow-Origin响应头中没有响应,浏览器将不允许在JavaScript代码中使用响应,并在网络级别引发异常。您需要cors在服务器端进行配置。

您可以使用提取请求mode: 'cors'。在这种情况下,浏览器不会为跨域抛出执行,但是浏览器不会在您的javascript函数中给出响应。

因此,在两种情况下,您都需要cors在服务器中进行配置,或者需要使用自定义代理服务器。

  • 我认为这是一个错字,它是“no-cors”返回不透明的响应,请参阅/sf/answers/3028766891/ (4认同)
  • @Christian 同意,但没有什么可以阻止你发布自己的答案,并且鉴于你的第一个回复,我确信它会给这个主题带来一些有趣的东西(这里不是讽刺)。 (4认同)
  • 如果您要获取其他任何服务器(例如google或facebook),但该服务器不提供访问权限,则可能需要服务器来处理。在服务器中,您可以从Google获取响应并将其发送回客户端。 (3认同)
  • 如果我想抓取 Google 结果怎么办?就像,我想从我的客户端代码请求“https://www.google.com”并解析结果。是否可以?我遇到了与他相同的错误。这是否意味着 google.com 不允许对其主搜索页面发出 CORS 请求?谢谢。 (2认同)
  • @Christian 请随意纠正它。 (2认同)