【问题标题】:How to enable CORS on Firefox如何在 Firefox 上启用 CORS
【发布时间】:2014-10-19 17:19:08
【问题描述】:

如何在 Firefox 上允许 CORS

我在 Chrome 和 Internet Explorer 上轻松管理它,但在 Firefox 上我完全失败了。我编辑了以下 about:config 条目

security.fileuri.strict_origin_policy = false

此尝试已在此处多次发布,并且在其他网站上也已告知,但没有任何效果。我阅读了 same-origin policies 的 Mozilla 指南:

Cross-Origin Resource Sharing (CORS)

但它只是解释了 CORS 和相关主题。未列出在 Firefox 上启用它的解决方法。

有确定的解决方案吗?

PS:FORCECORS 也无法正常工作...

【问题讨论】:

  • 对于 CORS,没有简单的答案。这个网站有你在服务器端和客户端需要的所有信息enable-cors.org

标签: firefox cors same-origin-policy


【解决方案1】:

对浏览器不做任何事情。 CORS is supported 默认在所有现代浏览器上(以及自 Firefox 3.5 起)。

被 JavaScript 访问的服务器必须通过 CORS HTTP 响应标头向托管运行 JS 的 HTML 文档的站点授予权限。


security.fileuri.strict_origin_policy 用于让本地 HTML 文档中的 JS 访问您的整个硬盘。不要将其设置为 false,因为它会使您容易受到来自下载的 HTML 文档(包括电子邮件附件)的攻击。

【讨论】:

  • 谢谢,我现在正在尝试这种方法,但我仍然无法访问我的 tomcat 上的 Web 服务。我尝试了以下链接中引用的高级示例:tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter/…你能告诉我我还需要管理什么吗?
  • 由于您没有提供任何用于尝试访问 Web 服务器的代码,也没有引用您在 JavaScript 控制台中收到的错误消息,也没有引用 HTTP 请求和JavaScript 发出和接收的响应(在浏览器开发者工具的“网络”选项卡中可见)——不。
  • 请求被中止,所以根本没有响应头。问题仅在Firefox中。不在 chrome 中。
【解决方案2】:

只有在服务器发送此标头时才有可能:Access-Control-Allow-Origin: *

如果这是您的代码,那么您可以像这样设置它(PHP):

header('Access-Control-Allow-Origin: *');

【讨论】:

  • 感谢 CORS 问题困扰我很久了。
  • 只是一个警告说明,在任何地方添加 Access-Control-Allow-Origin: * 可以为任何人和每个人启用 CORS。尽管无论如何您都应该采取安全措施,但如果 API 仅由特定资源使用,那么您应该通过逗号分隔列表限制允许哪些域,而不是提供 *
  • 这是不安全的。除非你确定这是你想要的,否则不要这样做。
【解决方案3】:

我被这个问题困扰了很长时间(CORS 在 FF 中不起作用,但在 Chrome 和其他人中起作用)。任何建议都无济于事。最后,我发现 /etc/hosts 中没有明确提及我的本地开发子域(如 sub.example.dev),因此 FF 无法找到它并显示令人困惑的错误消息 'Aborted...' 在开发工具面板中。

将确切的子域放入我的本地 /etc/hosts 解决了这个问题。 /etc/hosts 在 unix 系统中只是一个纯文本文件,所以你可以在 root 用户下打开它,并将你的子域放在 '127.0.0.1' ip 地址的前面。

【讨论】:

  • 可能描述如何将子域“放入” /etc/hosts 会有所帮助。最好的问候
【解决方案4】:

您通常无法设置发送服务器,因此我将 JavaScript 代码中的 XMLHttpRequest.open 调用更改为本地 get-file.php 文件,其中包含以下代码在里面:

<?php
  $file = file($_GET['url']);
  echo implode('', $file);
?>

JavaScript 代码正在这样做:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    // File content is now in the this.responseText
  }
};
xhttp.open("GET", "get-file.php?url=http://site/file", true);
xhttp.send();

就我而言,这完美地解决了限制/情况。无需破解 Firefox 或服务器。只需将带有那个 PHP 小文件的 JavaScript/HTML 文件加载到服务器中即可。

【讨论】:

    【解决方案5】:

    这个 Firefox 插件可能对你有用:

    https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

    它可以为开发目的打开和关闭 CORS。

    【讨论】:

      猜你喜欢
      • 2015-01-09
      • 2018-10-03
      • 1970-01-01
      • 2016-01-24
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2017-03-19
      相关资源
      最近更新 更多