我在做一个Ajax。请求一个远程PHP服务器在Sencha Touch 2应用程序(包装在PhoneGap)。

服务器的响应如下:

XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。Access-Control-Allow-Origin不允许Origin http://localhost:8888。

我该如何解决这个问题?


当前回答

这可能对任何需要为引用器的'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');
 }

其他回答

在使用各种api时,我遇到过几次这种情况。通常一个快速的解决方法是在字符串的末尾添加“&callback=?”有时&号必须是字符代码,有时是“?””:“回调= ?”(见预测。jQuery的API使用方法

如果你正在使用Apache,只需添加:

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

在构型中。这将导致来自您的web服务器的所有响应都可以从互联网上的任何其他站点访问。如果你打算只允许你的主机上的服务被特定的服务器使用,你可以用原始服务器的URL替换*:

Header set Access-Control-Allow-Origin: http://my.origin.host

如果你正在编写一个Chrome扩展并得到这个错误,那么请确保你已经将API的基本URL添加到你的清单中。Json的权限块,例如:

"permissions": [
    "https://itunes.apple.com/"
]

露比·辛纳屈

response['Access-Control-Allow-Origin'] = '*' 

对每个人来说

response['Access-Control-Allow-Origin'] = 'http://yourdomain.name' 

如果你在apache下,只需添加一个。htaccess文件到你的目录,内容如下:

Header set Access-Control-Allow-Origin: *

Header set Access-Control-Allow-Headers: content-type

Header set Access-Control-Allow-Methods: *