NetworkError:405方法不允许AngularJS REST

时间:2013-04-04 00:43:16

标签: angularjs

在AngularJS中,我有以下功能,工作正常:

$http.get( "fruits.json" ).success( $scope.handleLoaded );

现在我想将它从一个文件更改为一个url(使用一些甜蜜的Laravel 4返回json):

$http.get( "http://localhost/fruitapp/fruits").success( $scope.handleLoaded );

我得到的错误是:

"NetworkError: 405 Method Not Allowed - http://localhost/fruitapp/fruits"

有什么问题?是因为fruit.json是“本地”而localhost不是?

4 个答案:

答案 0 :(得分:6)

来自w3

10.4.6 405 Method Not Allowed

The method specified in the Request-Line is not allowed for the resource 
identified by the Request-URI. The response MUST include an Allow header 
containing a list of valid methods for the requested resource.

表示URL:http://localhost/fruitapp/fruits服务器正在响应不允许使用GET方法。是POST还是PUT

答案 1 :(得分:1)

您使用的角度js版本将是< = 1.2.9。

如果是,请尝试此操作。

return $http({                
    url: 'http://localhost/fruitapp/fruits',
    method: "GET",
    headers: {
        'Content-Type': 'application/json', 
        'Accept': 'application/json' 
    }
});

答案 2 :(得分:0)

我的SpringBoot项目遇到了类似的问题,我在浏览器控制台中遇到了同样的错误但是当我查看后端日志时看到了不同的错误消息,它抛出了这个错误:“org.springframework .web.HttpRequestMethodNotSupportedException,message =不支持请求方法'DELETE'“事实证明我错过了后端控制器中的{id}参数:

** Wrong code :** 
@RequestMapping(value="books",method=RequestMethod.DELETE)
	public Book delete(@PathVariable long id){
	Book deletedBook = bookRepository.findOne(id);
	bookRepository.delete(id);
	return deletedBook;
}

** Correct code :** 

@RequestMapping(value="books/{id}",method=RequestMethod.DELETE)
	public Book delete(@PathVariable long id){
		Book deletedBook = bookRepository.findOne(id);
		bookRepository.delete(id);
		return deletedBook;
}

答案 3 :(得分:0)

对我来说,没有为CORS配置服务器。 以下是我在Azure上的表现:CORS enabling on Azure 我希望类似的东西也适用于你的服务器。 我还找到了如何在web.config上配置CORS的提议,但不保证:configure CORS in the web.config。通常,您的服务器会有一个预检请求,如果您执行了跨域请求(来自您服务器之外的其他URL),则需要允许服务器上的所有源(Access-Control-Allow-Origin) *)。