【问题标题】:Bypassing CORS issue in Chrome [duplicate]在 Chrome 中绕过 CORS 问题 [重复]
【发布时间】:2019-06-30 23:47:32
【问题描述】:

我们正面临通过 XMLHTTPRequest 使用 Chrome 请求失败并出现以下错误的问题:

无法加载<server url>:没有“Access-Control-Allow-Origin”标头 存在于请求的资源上。原点“<client domain>”是 因此不允许访问。

此错误是特定于 Chrome 的,因为我们在 IE 中没有遇到此问题。有没有办法绕过 JavaScript 中的这个错误。

【问题讨论】:

  • 有一个 Chrome 扩展“Allow-Control-Allow-Origin:”可能会有所帮助。
  • 请在您的问题中发布相关代码sn-ps。
  • @stever 这将使请求成为 OPTIONS,服务器只支持 POST
  • @HereticMonkey 我已经检查过了。但是它没有说明如何在 javascript 代码中跳过它。
  • 对,因为这在 JavaScript 代码中是不可能的。

标签: javascript google-chrome


【解决方案1】:

基本上,仅出于开发目的,您可以使用 disable-web-security 标志以轻松模式启动 Chrome 浏览器:

这是在 Windows 上的操作方法(感谢 https://alfilatov.com/posts/run-chrome-without-cors/

  • 桌面右键,添加新快捷方式
  • 将目标添加为“[PATH_TO_CHROME]\chrome.exe” --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp
  • 点击确定。

“user-data-dir”中的目录必须具有 Chrome 的读/写权限。

您将在 Chrome 中收到一条警告横幅,通知您降低安全性,因为这实际上就是您在此处看到的。仅用于测试。

注意:此答案基于 Franco Fontana 的仅链接答案,该答案因仅链接而被删除,但该链接实际上对我有所帮助。

【讨论】:

    【解决方案2】:

    没有,幸好没有。

    同源策略是一种由浏览器实施的安全概念,用于防止 Javascript 代码向与其提供服务的源/域不同的源/域发出请求。因此,让开发人员绕过 Javascript 将是一件坏事。

    跨源资源共享 (CORS) 是一种机制,它使用额外的 HTTP 标头告诉浏览器让在一个源(域)运行的 Web 应用程序有权访问来自不同源的服务器的选定资源。当 Web 应用程序请求具有与其自身来源不同的来源(域、协议和端口)的资源时,它会发出跨域 HTTP 请求。

    来源:Cross-Origin Resource Sharing (CORS)

    如果您可以控制 API
    添加一个 Access-Control-Allow-Origin 标头,其中包含您的请求源自的域。

    如果您无法控制 API
    请求 API 的开发者将您的域添加到 Access-Control-Allow-Origin 标头中。

    编辑:
    添加正确的标头不会“使请求成为OPTIONS 请求,而服务器只接受POST”。
    OPTIONS 请求是一个preflight request,用于检查是否可以实际进行 CORS 调用。如果预检请求具有正确的标头,POST 请求将跟随,如下图所示:

    您可以在文章Understanding CORS中找到所有基本的CORS信息

    【讨论】:

    • 添加 Access-Control 参数将使请求成为 HTTP OPTIONS 并且服务器只支持 POST。
    • 不,不会。 OPTIONS 请求是 preflight request,用于检查是否可以实际进行 CORS 调用。如果预检请求具有正确的标头,POST 请求将紧随其后。
    【解决方案3】:

    虽然它有限,但可以尝试在任何地方使用 CORS https://github.com/Rob--W/cors-anywhere 或允许您绕过 CORS 的 chrome 扩展程序 here(确保在不测试时将其关闭,因为它会导致来自其他网站的请求出现问题)

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 1970-01-01
      • 2016-09-20
      • 2020-01-15
      • 1970-01-01
      • 2022-12-18
      • 2019-08-22
      • 2019-12-23
      • 2016-10-28
      相关资源
      最近更新 更多