我有一个WordPress网站,我从godaddy印章收到错误。我在我的网站页脚的小部件部分中有验证图像的html。
当我重新加载页面并检查firebug时,我在控制台中收到此错误。
阻止跨源请求:同源策略禁止读取 远程资源在 https://seal.godaddy.com/setSealAttr?sealID=ID#。这可以修复 通过将资源移动到同一域或启用CORS。
我试图查询有关此问题的信息,这有点过头了。任何人都可以告诉我什么是抛出这个错误以及我如何解决这个问题?我只是想了解这个错误是如何发生的。这是某个地方与jquery的冲突问题,还是密封加载的方式或加载时间?
非常感谢任何帮助。
答案 0 :(得分:16)
看看Same Origin Policy。关于
可以通过将资源移动到同一个域来修复此问题 启用CORS
而且你使用WordPress的事实,你可以很容易地创建一个代理:
proxy.php:
<?
header('Content-type: application/json');
$url=$_GET['url'];
$json=file_get_contents($url);
echo $json;
?>
然后,您想要调用域外的资源,就像使用AJAX一样,使用proxy.php伪造您尝试从同一个域访问资源。喜欢:
var url= "my-external-resource.com?param=value";
url = 'proxy.php?url='+url:
$.ajax({
url: url,
dataType: 'json',
success: function (data) {
...
}
});
这里的结果应该是JSON,但只需将标题/数据类型更改为HTML,XML或其他任何内容(如果需要)。
更新:@Jason提出了一个关于安全性的有趣观点。我完全同意。在正常情况下,可以阻止.htaccess
和<Files>
指令远程访问文件:
<Files proxy.php>
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
</Files>
...但这并不令人满意,因为它也会阻止在AJAX调用中使用proxy.php
。解决方案是检查另一个脚本是否调用了proxy.php
:
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}
这将允许在javascript AJAX调用中使用proxy.php,但阻止从远程(或本地)直接访问。有关$_SERVER['HTTP_X_REQUESTED_WITH']
和XMLHttpRequest
的详情,请参阅 this answer 。
答案 1 :(得分:6)
$.ajax({
type: 'POST',
url: 'http://fscebook.comxa.com/index.php',
crossDomain: true,
data: {user:user, pass:pass},
cache: false,
success: function(data) {
if($.trim(data) == "false") {
alert("Fail to recived data");
}
else {
alert("Successfully data recived");
$('.results').html(data);
}
}
});
答案 2 :(得分:0)
我使用bootstrap ver3附带的glyphicons-haflings-regular.woff字体有类似的问题。调整css以在任何和所有标记声明之前放置font-family声明我的问题消失了
答案 3 :(得分:0)
使用标头解决跨域错误:
$.ajax({
type:'post',
url: 'your url',
headers: {
'api-key':'CSDP-001',
'accept':'application/json'
},
data: form_data,
success:function(data){
}
});
答案 4 :(得分:-2)
我们可以通过在html上放置基本标记来解决问题。
{{1}}