12

在 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

4 回答 4

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

于 2013-04-04T01:22:05.797 回答
1

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

如果是,试试这个。

return $http({                
    url: 'http://localhost/fruitapp/fruits',
    method: "GET",
    headers: {
        'Content-Type': 'application/json', 
        'Accept': 'application/json' 
    }
});
于 2016-01-28T06:05:43.830 回答
0

我的 SpringBoot 项目遇到了类似的问题,我在浏览器控制台中遇到了同样的错误,但是当我查看后端日志时看到了不同的错误消息,它抛出了这个错误:“org.springframework.web. HttpRequestMethodNotSupportedException, message=Request method 'DELETE' not supported " 原来我在后端控制器中缺少 {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;
}

于 2016-05-04T00:19:38.613 回答
0

对我来说,这是没有为 CORS 配置的服务器。这是我在 Azure 上的做法: 在 Azure 上启用 CORS 我希望类似的东西也适用于您的服务器。我还找到了如何在 web.config 上配置 CORS 的建议,但不能保证:在 web.config 中配置 CORS。一般来说,您的服务器有一个预检请求,如果您做了一个跨域请求(即来自您服务器之外的另一个 url),您需要允许服务器上的所有来源(Access-Control-Allow-Origin *)。

于 2017-01-21T20:36:13.093 回答