Restful 经常会遇到的HTTP状态码

原创
2016/05/06 09:48
阅读数 400


1、405 Method Not Allowed

请求方式错误,比如服务端约定PUT请求,结果客户端采用了GET;

我的项目中是这样的,访问的服务真实存在,但是用PUT,POST访问的url是不存在的,所以出现这样的问题,就是访问的IP写成了别人的了。


2、415 Unsupported Media Type

请求的Content-Type 错误,对于GET请求没有限制,但是对于其他请求方式,尤其是POST,则必须使用 ContentType:"application/json" ; 另外 dataType 是服务端返回类型,最好不要指定。

这里还有一点需要注意,那就是服务端会采用 @RequestBody来获取参数,因为 RestController默认把 @RequestBody和@ResponseBody作为JSON处理,所以需要采用JSON格式接收

contentType:"application/json"

3、400 Bad Request

表示请求报文中存在语法错误

这个是和415有关联的,因为415必须指定请求给服务端的数据类型,如果指定了为"application/json" , 那么使用ajax发送数据是即data参数必须为json格式的字符串

JSON.stringify(obj) ; 不能使用$('form').serialize();原因就是这个方法内部使用了 $.param(obj)把参数转为 url的参数了,而且还进行了特殊字符转码,需要使用decodeURIComponent解码,jquery还把空格转为了+号

data:JSON.stringify(obj)


4、403 Forbidden

就我的工程中是因为,Controller里面新增了delete方法,但是没有重启就直接前台ajax 调用 delete,换句话说如果没有对应的方法就直接访问,就会出现这个 403,其实 404 与之不同的是估计就是请求方式的不同导致的,所以,只要重启项目就OK了。


5、413 Request Entity Too Large

Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)

发送POST请求数据时,由于表单数据太大,导致发生了一个客户端错误,如果有web服务器,比如Nginx那么是可以调节上传的数据的大小来解决这个问题,或者是可以把请求的参数变小。


6、302 Found 

应该是访问的URL地址和静态资源的文件夹路径冲突了,静态资源地址的文件夹也是。

临时性重定向,该状态码表示请求的资源已经被分配了新的URI,希望用户本次能使用新的URI访问。


7、401 Authentication is possible but has failed

表示发送的请求需要有通过HTTP验证的认证信息,这个就是在使用SVN时,在浏览器打开需要用户输入用户名和密码。


8、404 Not Found

表示资源不存在,很可能是客户端URL地址写错了


图例:

展开阅读全文
打赏
1
7 收藏
分享
加载中
更多评论
打赏
0 评论
7 收藏
1
分享
返回顶部
顶部