2016-03-01 141 views
1

enter image description here我已阅读关于此角度问题的所有问题,但Angular $ http发送的是OPTIONS而不是PUT。 (带后一切正常),我们的项目是在谷歌应用程序引擎(蟒蛇)

$httpProvider.defaults.useXDomain = true; 
delete $httpProvider.defaults.headers.common['X-Requested-With']; 
在配置

$scope.updateUser = function() { 
    /*$http.put(myurl, { 
     admin: "on" 
    }).success(function (result) { 
     console.log(result); 
     $scope.resultPost = result; 
    }).error(function (result) { 
     console.log(result); 
    });*/ 
    var uri = my url; 
    $http({ 
     method: 'PUT', 
     url: uri, 
     headers: {"Content-Type": "application/json;charset=UTF-8"}, 
     data: {} 
    }); 
}; 

约将appreaciated解决任何意见。

+2

与角度完全没有关系。这是浏览器发送OPTIONS作为跨域请求的CORS规范的一部分。您需要在服务器上启用CORS。请查看浏览器控制台中的错误,并查看该错误。问题每天都会在这里出现很多次,并且在服务器上启用了CORS – charlietfl

+0

CORS上有很多可用的文档。关于POST没有任何问题。 – TheNone

+0

然后它没有正确启用。复制来自浏览器开发工具网络的请求中的响应标题并发布问题 – charlietfl

回答

2

发送请求与OPTIONS方法是浏览器在使用CORS时的正确行为。

了解更多关于CORS这里:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

本文解释了为什么它需要做这种方式。更specificaly部分标题为“预检请求”:

不同于简单的请求(上面讨论的),“预检”请求第一发送由OPTIONS方法的HTTP请求发送到在另一域中的资源,以确定是否实际要求可以安全发送

+0

为什么您从问题中删除python标签?如果OP在服务器上确实使用了与情况相关的python – charlietfl

+1

问题并不是要求关于Python的任何内容,OP是否使用GAE是否是irellevant,他是在问他的Angular代码有什么问题。如何为CORS设置GAE与Angular无关,并且是另一个问题的主题。 – martin

+0

但CORS是一个服务器端问题。同意问题需要重新工作,但你的回答没有澄清, – charlietfl