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

服务器的响应如下:

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

我该如何解决这个问题?


当前回答

当您收到请求时,您可以

var origin = (req.headers.origin || "*");

而当你不得不这样回答的时候:

res.writeHead(
    206,
    {
        'Access-Control-Allow-Credentials': true,
        'Access-Control-Allow-Origin': origin,
    }
);

其他回答

这是因为同源政策。详见Mozilla开发者网络或维基百科。

基本上,在您的示例中,您只需要从ncatalogg .negroesquisso.pt加载http://nqatalog.negroesquisso.pt/login.php页面,而不是从localhost加载。

在Ruby on Rails中,你可以在控制器中执行以下操作:

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

当您收到请求时,您可以

var origin = (req.headers.origin || "*");

而当你不得不这样回答的时候:

res.writeHead(
    206,
    {
        'Access-Control-Allow-Credentials': true,
        'Access-Control-Allow-Origin': origin,
    }
);

露比·辛纳屈

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: *