AngularJS:$http.get 405(不允许的方法)

Posted

技术标签:

【中文标题】AngularJS:$http.get 405(不允许的方法)【英文标题】:AngularJS: $http.get 405 (Method Not Allowed) 【发布时间】:2015-11-02 03:28:06 【问题描述】:

当我收到来自 url 的请求时,像这样:

$http( 方法:'GET', 网址:'http://mooc-lms.dev.web.nd/v0.3/users/login' ).success(function(data, status, headers, config) //代码 );

但我得到的错误是:

GET http://mooc-lms.dev.web.nd/v0.3/users/login 405(方法不允许)

但是,如果我将方法从“GET”更改为“POST”,错误是:

POST http://mooc-lms.dev.web.nd/v0.3/users/login 415(不支持的媒体类型)

有什么问题?url(http://mooc-lms.dev.web.nd/v0.3/users/login) 有问题吗?我在 url 中找到 '"message":"Request method 'GET' not supported"'。

【问题讨论】:

如果你有这个错误,可能是因为你的服务器没有在这个url上实现任何GET方法。 向我们展示您的后端(不,那不脏),我们只需要看看您的请求应该做什么。也许你还没有实现它? 【参考方案1】:

GET 不起作用的原因是服务器不支持登录端点的GET,这不足为奇。在POST 请求上获得HTTP 415 响应的最常见原因是服务器要求您在请求标头中指定Content-Type 和/或Accept

我下面的示例将它们设置为application/json,这很常见,但并不普遍,因此您必须检查服务器需要什么,以及它会给您什么。鉴于该地址包含“mooc-lms”,我假设您正在学习某种在线课程。它应该为您提供该信息。该文档还应该告诉您需要使用 data 属性发送哪些数据。

$http(
    method: 'POST',
    url: 'http://mooc-lms.dev.web.nd/v0.3/users/login',
    headers: 
        'Content-Type': 'application/json', /*or whatever type is relevant */
        'Accept': 'application/json' /* ditto */
    ,
    data: 
        /* You probably need to send some data if you plan to log in */
    
)

【讨论】:

我遇到了类似的错误。我尝试了您的解决方案,但它对我不起作用。如果我直接在 url 栏中或通过 REST 客户端输入 URL,则 URL 会给出响应,我也会在响应中获取数据。我的服务器设置为Access-Control-Allow-Origin: * Access-Control-Allow-Origin 标头仅影响CORS。那是完全不同的事情。听起来你不应该发帖。如果您通过 URL 栏访问您的资源并获得您想要的,听起来您只是在获取。

以上是关于AngularJS:$http.get 405(不允许的方法)的主要内容,如果未能解决你的问题,请参考以下文章

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

AngularJS、REST、C# 服务、405 - 不允许发布方法

URLrewrite后不允许AngularJS / c#WebAPI 405方法

Angular $http CORS 405 方法不允许

加载资源失败:服务器从 Angularjs 响应状态为 405(不允许方法)到 WebApi

不允许使用 Django Angularjs 405 方法。 thinkster.io 教程