相关疑难解决方法(0)

Access-Control-Allow-Origin不允许使用Origin

我正在Ajax.request使用Sencha Touch 2应用程序(包装在PhoneGap中)创建一个远程PHP服务器.

服务器的响应如下:

XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php.原产地http://localhost:8888不被访问控制允许来源允许的.

我该如何解决这个问题?

javascript ajax xmlhttprequest cross-domain cors

331
推荐指数
15
解决办法
67万
查看次数

AngularJS:POST数据到外部REST API

我有一个基本的AngularJS服务设置,如下所示:

app.factory('User', function($resource) {
return $resource('http://api.mysite.com/user/:action:id/:attr', {}, {
    history: {
        method: 'GET',
        params: {
            attr: 'history'
        }
    },
    update: {
        method: 'POST',
        params: {
            name: 'test'
        }
    }
});
});
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

User.history({id: 'testID'}, function(data) {
    console.log('got history');
    console.log(data);
});
User.update({id: 'me'}, function(data) {
    console.log('updated');
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

问题一: User.update(),尽管将方法设置为POST,仍然继续发送OPTIONS作为请求方法.

虽然Chrome Dev工具报告了请求标头Access-Control-Request-Method:也会发送POST(不确定这是否意味着什么).

问题二:尽管在API代码中设置了这些标头,我仍然在使用CORS时出错:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
Run Code Online (Sandbox Code Playgroud)

如果发出非GET请求,则只会出现此问题.

处理这个问题的正确方法是什么?我也研究了JSONP,但是这是一个RESTful api,我不知道如何解决只有GET支持的问题.

javascript api cross-domain cors angularjs

16
推荐指数
2
解决办法
3万
查看次数

标签 统计

cors ×2

cross-domain ×2

javascript ×2

ajax ×1

angularjs ×1

api ×1

xmlhttprequest ×1