我从 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/