|
|
欢快的围巾 · 如何从零开始开发一个 VS Code ...· 2 年前 · |
|
|
豪气的西瓜 · Eclipse IDE for C/C++ ...· 2 年前 · |
|
|
爱听歌的跑步鞋 · 解决springboot中@DynamicU ...· 2 年前 · |
|
|
爱看球的牙膏 · 备份3个判断指针是否有效的函数,以备不时之需 ...· 2 年前 · |
|
|
强健的黑框眼镜 · 你还有多少天退休?看看强大的函数怎么计算 - 知乎· 2 年前 · |
我正在尝试发出一个简单的跨域请求,Firefox一直在阻止它,并显示以下错误:
跨域请求被阻止:同源策略不允许读取url处的远程资源。这可以通过将资源移动到相同的域或启用CORS来解决。url
它在Chrome和Safari上运行良好。
据我所知,我已经在我的PHP上设置了所有正确的头文件来允许它工作。下面是我的服务器的响应
我尝试过使用Angular、jQuery和一个基本的XMLHTTPRequest对象,如下所示:
...and它可以在所有浏览器上运行,除了火狐。有人能帮上忙吗?
事实证明,这与CORS无关--这是安全证书的问题。误导性错误=4小时的头痛。
只是一句警告。我终于用Firefox和CORS解决了这个问题。
我的解决方案是这篇文章
使用正确的响应头在Apache上设置CORS (跨域资源共享),允许所有内容通过|本杰明·霍恩
然而,在Apache服务器上设置了这些头文件(在文件夹.htaccess中)之后,火狐的行为非常非常奇怪。
我添加了很多
console.log("Hi FF,you are here A")
等,看看是怎么回事。
起初,它看起来像是挂在
xhr.send()
上。但是后来我发现它并没有到达this语句。我将另一个
console.log
放在它的前面,但没有到达那里--即使在上一个
console.log
和新的and之间没有任何东西。它只是在两个
console.log
之间停止。
重新排序行,删除,看看文件中是否有奇怪的字符。我什么也没找到。
重新启动Firefox解决了这个问题。
是的,我应该提交一个bug。只是它太奇怪了,所以不知道怎么重现。
注意:哦,我只做了
Header always set
部分,没有做
Rewrite*
部分!
我发现我的问题是我向其发送了cross请求的服务器有一个不受信任的证书。
如果您要使用
https
连接到跨域,则必须先为该证书添加例外。
您可以通过访问被阻止的链接一次并添加异常来完成此操作。
这些文件是不言而喻的。做个文件,随便叫什么都行。在我的例子中,jq2.php。
现在我们将包含一个引擎,创建一个文件,给它起任何你喜欢的名字。在我的例子中,它是gs.php。
我已经尝试使示例尽可能简单。因为它会在每次按键时执行链接,所以API的配额将很快被消耗。
当然,我们可以做的事情是没完没了的,比如把数据放到表中,发送到数据库等等。
只需添加
添加到您尝试连接的网站根目录下的
.htaccess
文件。
2天后我找到了解决方案:(。
重要提示:在响应凭据请求时,服务器必须指定一个域,并且不能使用通配符。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials
对我来说,结果是我将
Access-Control-Allow-Origin
响应头设置为一个特定的(正确的)
host.com
,但它必须作为
header返回。firefox做了什么?它默默地接受GET请求,并向XHR返回状态0,没有向javascript控制台输出任何警告,而对于其他类似的失败,它至少会说点什么。天啊。
试试这个,它应该能解决你的问题
在你的config.php中,在你的domain.com中添加www pre。例如:
HTTP定义(‘HTTP_SERVER’,‘带有www/’的http://domain名称);HTTPS define('HTTPS_SERVER',‘带有www/’的http://domain名称);
将此代码添加到您的.htaccess文件中
RewriteCond %{REQUEST_METHOD}选项RewriteRule ^(.*)$ $1 R=200,L
对于后续版本,还要检查服务器日志,以查看所请求的资源是否返回200。
我遇到了一个类似的问题,所有正确的头都在飞行前的ajax请求中返回,但浏览器报告实际的请求由于错误的CORS头而被阻塞。
原来,被请求的页面由于错误代码而返回500错误,但仅当它是通过CORS获取时才返回。浏览器( Chrome和Firefox)错误地报告缺少Access-Control-Allow-Origin头,而不是页面返回500。
要进行调试,请检查服务器日志。Firefox在控制台中返回CORS错误的原因有很多。
其中一个原因也是uMatrix (我猜也是NoScript和类似的)插件。
我遇到了类似的问题,我认为我修复它的方式是有效的注册:
我有一个基本上建立在Symfony 3上的系统,出于自学和性能的目的,我决定使用GoLang编写一些脚本。
我的Go API需要Json格式参数,并返回Json格式响应
把我正在使用的GoApi称为最多的$.ajax ( jQuery )第一个测试是一个骗局:(联合国)著名的“跨域请求被阻止”弹出!然后,我尝试在apache conf、htaccess、php、javascript和任何我能在google上找到的地方设置"Access-Control-Allow-Origin:*“。
但是,甚至,同样令人沮丧的错误!
解决方案很简单:我必须发出"POST“请求而不是"GET”请求。
为了实现这一点,我必须调整GoLang和JavaScript以使用GET!一旦完成,就不会再阻止我的跨域请求了!
希望能有所帮助
PS:
我正在使用apache和Vhost,在目录块上
请记住:"*“表示您将接受任何人的请求!(这可能是缺乏安全性)在我的情况下,它是可以的,因为它将是一个公共API。
PS2:我的标题
响应头部
请求标头(469 B)
如果你没有“真正的”证书(因此使用的是自签名证书),你可以在Firefox中访问:
在这里,填写位置,例如:
https://www.myserver:myport
我遇到了这个问题,我发现Firefox中的请求被阻止了,消息如下:
原因: CORS请求未成功
拔掉头发后,我发现一个新安装的Firefox扩展Privacy Badger阻止了这些请求。
如果你在挠头之后遇到这个问题,试着检查一下你安装了哪些扩展,看看它们中是否有阻止请求的。
详情请查看原因: MDN上CORS请求未成功。
如果上述答案没有帮助,那么检查后端服务器是否启动并运行,就像我的例子一样,服务器崩溃了,这个错误被证明是完全误导性的。
在我的情况下,它是我的广告拦截器!由于某种原因,它在我的本地主机上被启用,并在Firefox中导致此错误。
禁用它或卸载插件应该可以解决这个问题。
在你的例子中,它可能不是一个广告拦截器,而是另一个Firefox插件。首先在没有插件的情况下对其进行测试,以确定这是否是问题所在,然后系统地禁用插件,直到找到罪魁祸首。
在我的例子中,CORS错误只发生在带有文件附件而不是小文件的POST请求中。
在浪费了许多小时后,我们发现使用卡巴斯基Total Control的用户的请求被阻止了。
其他杀毒软件或防火墙软件也可能导致类似的问题。卡巴斯基对请求进行了一些安全测试,但对拥有SSL EV证书的网站省略了这些测试,因此获得此类证书应该可以很好地解决这个问题。
为您的域名禁用保护有点棘手,因此以下是必需的步骤(从2020年12月起):设置->网络设置->管理排除->添加->您的域名->保存
好消息是你可以检测到这类被阻塞的请求。错误为空-它没有状态和响应。这样你就可以假定它被第三方软件屏蔽了,并显示一些信息。
当我的请求处理时间超过10秒时,Ubuntu Firefox出现CORS failed错误。
与CORS无关。问题出在ubuntu firefox的配置上。
我已经将network.notify.changed更新为false,从而修复了此问题。
Mozilla Bugs参考:
https://bugzilla.mozilla.org/show_bug.cgi?id=1238377
https://bugzilla.mozilla.org/show_bug.cgi?id=1235509
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
|
|
强健的黑框眼镜 · 你还有多少天退休?看看强大的函数怎么计算 - 知乎 2 年前 |