我在做一个Ajax。请求一个远程PHP服务器在Sencha Touch 2应用程序(包装在PhoneGap)。
服务器的响应如下:
XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。Access-Control-Allow-Origin不允许Origin http://localhost:8888。
我该如何解决这个问题?
我在做一个Ajax。请求一个远程PHP服务器在Sencha Touch 2应用程序(包装在PhoneGap)。
服务器的响应如下:
XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。Access-Control-Allow-Origin不允许Origin http://localhost:8888。
我该如何解决这个问题?
当前回答
露比·辛纳屈
response['Access-Control-Allow-Origin'] = '*'
对每个人来说
response['Access-Control-Allow-Origin'] = 'http://yourdomain.name'
其他回答
这是因为同源政策。详见Mozilla开发者网络或维基百科。
基本上,在您的示例中,您只需要从ncatalogg .negroesquisso.pt加载http://nqatalog.negroesquisso.pt/login.php页面,而不是从localhost加载。
在使用各种api时,我遇到过几次这种情况。通常一个快速的解决方法是在字符串的末尾添加“&callback=?”有时&号必须是字符代码,有时是“?””:“回调= ?”(见预测。jQuery的API使用方法
如果你在apache下,只需添加一个。htaccess文件到你的目录,内容如下:
Header set Access-Control-Allow-Origin: *
Header set Access-Control-Allow-Headers: content-type
Header set Access-Control-Allow-Methods: *
在Ruby on Rails中,你可以在控制器中执行以下操作:
headers['Access-Control-Allow-Origin'] = '*'
这可能对任何需要为引用器的'www'和'非www'版本提供异常的人来说都很方便:
$referrer = $_SERVER['HTTP_REFERER'];
$parts = parse_url($referrer);
$domain = $parts['host'];
if($domain == 'google.com')
{
header('Access-Control-Allow-Origin: http://google.com');
}
else if($domain == 'www.google.com')
{
header('Access-Control-Allow-Origin: http://www.google.com');
}