如何在 Firefox 上启用 CORS

Posted

技术标签:

【中文标题】如何在 Firefox 上启用 CORS【英文标题】:How to enable CORS on Firefox 【发布时间】: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 【参考方案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。

【讨论】:

以上是关于如何在 Firefox 上启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章

WebAPi - Firefox 和 chrome 中的 CORS

如何使用 Angular 7 在 django1.1 中启用 cors?

Tomcat 启用 CORS:来自 Safari 的 POST 请求返回 200,Chrome 和 Firefox 返回 403

如何在 nodejs express 重定向上启用 CORS?

如何在我的 Django REST api 上调试启用 CORS

如何在 paypal SDK API 上启用 CORS?