javascript - 如何修复 ajax 请求的跨源请求被阻止(在 Firefox 中)?

标签 javascript ajax

我从 Firefox 中的 ajax 请求收到以下错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.example.org/php/save.php. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

我试图找出为什么会发生这种情况。很奇怪,因为

  • 该脚本在同一服务器上的我的子域上运行完全正常
  • 访问的文件位于同一服务器上

我也尝试过

xhttp = new XMLHttpRequest({mozSystem: true});

按照此处的建议:https://stackoverflow.com/a/22392080

但这也没有帮助。

我使用以下命令来打开请求:

xhttp.open('POST', '/php/save.php', true);

当文件位于另一台服务器上时,我找到了许多其他解决方案:

<IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "*"
</IfModule>

但是如果文件实际上位于同一服务器上,我不明白为什么我应该这样做......

编辑

我从 .htaccess 文件中删除了以下两行,现在它可以工作了。

RewriteCond     %{HTTP_HOST}    !^www\.example\.org$                        [NC] 
RewriteRule     .?              http://www.example.org%{REQUEST_URI}        [R=301,L]

虽然我不确定为什么...也许添加 www. 就像移动到子域一样?

我必须在 .htaccess 文件中添加什么才能使其与 ajax 和重写一起使用?

最佳答案

这就是解决我的问题的方法 - 尽管我不确定为什么。而不是我之前使用的重写:

RewriteCond %{HTTP_HOST} !^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L]

关于javascript - 如何修复 ajax 请求的跨源请求被阻止(在 Firefox 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41822936/

相关文章:

javascript - onMessage 不能在 React Native 中工作

javascript - 如何防止整数onreadystatechange的改变

javascript - pjax/ajax 和浏览器后退按钮问题

javascript - 如何使用 AJAX 在 javascript 变量中发布数据

javascript - 发送带有正文的 Angular $http.delete

javascript - 当文本/类不在 css 或样式标签中时,如何将 &lt;style&gt; 标签中的按钮与它对齐?

javascript - 使用javascript翻转图像时更改页面背景

javascript - 将 PowerShell 日期转换为 JavaScript 日期(Unix 时间)

javascript - 为什么 UpdatePanel 会在几分钟后停止工作?

Javascript将数组过滤到新数组中