405 方法不允许使用 $http 服务 AngularJS

Posted

技术标签:

【中文标题】405 方法不允许使用 $http 服务 AngularJS【英文标题】:405 method not allowed using $http service AngularJS 【发布时间】:2017-12-03 06:53:56 【问题描述】:

我从 localhost 发出请求时收到 405 错误,这是完整的错误:

选项http://www.myurl.com 405(方法不允许)

XMLHttpRequest 无法加载 http://www.myurl.com。预检响应包含无效的 HTTP 状态代码 405

我理解这个问题,但奇怪的是我在使用 angular $http 服务时遇到了这个错误:

var req = 
    method: 'POST',
    url: 'http://www.myurl.com',
    headers: 
        'Content-Type': 'application/json'
    ,
    data: 
    


$http(req)
    .then(function(res) ,
        function(error) );

使用 XMLHttpRequest 效果很好:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() 
    if (this.readyState == 4 && this.status == 200) 
        console.log(xhttp.responseText);
    
;
xhttp.open("POST", 'http://www.myurl.com', true);
xhttp.send();

我有一个 chrome 扩展来添加 CORS 标头,它正在工作。我还注意到,如果我删除 xhttp.open 中的第三个参数,则会再次出现错误。

¿有人知道原因吗? ¿如何使用角度服务而不出现错误?

【问题讨论】:

【参考方案1】:

你可以这样写。因为您没有向 url 发送任何参数。所以我认为这是一个很好的方法。试试吧,它可能对你有用。

$http.post('http://www.myurl.com').
success(function(data) 
     //success Response here
);

【讨论】:

【参考方案2】:

您需要在服务器端允许 OPTIONS 方法。在每个 GET、POST、PUT、DELETE... 请求之前,都会启动一个 OPTIONS 请求。

我建议您禁用“添加 CORS 的 chrome 扩展”,以使最终用户具有相同的配置。

【讨论】:

以上是关于405 方法不允许使用 $http 服务 AngularJS的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 状态 405 – Apache Tomcat 服务器中不允许的方法 [重复]

服务器响应状态为 405(不允许使用方法)

CORS 405(不允许的方法)

AngularJS:$http 服务 GET 到 php 服务器:请求方法:选项,状态代码:405 方法不允许

405:不允许的方法

Http post 405方法不允许