博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP Request Method
阅读量:6422 次
发布时间:2019-06-23

本文共 2956 字,大约阅读时间需要 9 分钟。

hot3.png

HTTP/1.1协议中共定义了八种方法来表明Request-URI指定的资源的不同操作方式:

方法名称区分大小写

  • OPTIONS 用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项(Access-Control-Allow-*), 也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
    如果没有响应正文,响应必须包含Content-Length,并且值为“0”
  • HEAD   向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不用传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  • GET      向特定的资源发出请求。
  • POST   向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
  • PUT     向指定资源位置上传其最新内容。
  • DELETE 请求服务器删除Request-URI所标识的资源。
  • TRACE   回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

ps.

当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);
当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

GET与POST区别

  • GET:  安全性相对低
    Query String Parameters ( Query String) 的方式, 将参数拼接在URL中,  因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系(HTTP协议规范也没有对URL长度进行限制,这个限制是特定的浏览器及服务器对它的限制。 eg.  IE对URL长度的限制是2083字节(2K+35字节))。如果url太长,服务器可能会因为安全方面的设置从而拒绝请求或者发生不完整的数据请求。
  • POST: 安全性相对高 
    Request Payload (Request Body)提交; 理论上讲是没有数据大小限制, HTTP协议规范也没有进行限制,但实际上post所能传递的数据量大小取决于服务器的设置和内存大小。

GET产生一个TCP数据包;POST产生两个TCP数据包!

GET:浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

POST: 浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

中文乱码:

      Post方式:在JSP中request解析数据时设置编码格式:request.setCharacterEncoding("utf-8"); 也可以使用Spring的CharacterEncodingFilter统一setCharacterEncoding。

characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceRequestEncoding
false
forceResponseEncoding
true
characterEncodingFilter
/*
CharacterEncodingFilter:private String encoding; //要使用的字符集,一般我们使用UTF-8(保险起见UTF-8最好)private boolean forceRequestEncoding = false; //是否强制设置request的编码为encodingprivate boolean forceResponseEncoding = false; //是否强制设置response的编码为encoding @Override    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {        String encoding = getEncoding();        if (encoding != null) { //如果设置了encoding的值,则根据情况设置request和response的编码            //若设置request强制编码或request本身就没有设置编码则设置编码为encoding表示的值            if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {                 request.setCharacterEncoding(encoding);            }            //若设置response强制编码,则设置编码为encoding表示的值            if (isForceResponseEncoding()) {                 response.setCharacterEncoding(encoding);            }        }        filterChain.doFilter(request, response);    }

Get方式:  对url编码encodeURI; 修改tomcat的配置server.xml   <Connector> URIEncoding="UTF-8"。

 

引贴: 

转载于:https://my.oschina.net/u/3434392/blog/1836685

你可能感兴趣的文章
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>
html5-离线缓存
查看>>
linux系统安装完后的常见工作
查看>>
在Linux服务器、客户端中构建密钥对验证进行远程连接
查看>>
揪出MySQL磁盘消耗迅猛的真凶
查看>>
和“C”的再遇
查看>>
一键安装kubernetes 1.13.0 集群
查看>>
RabbitMq的集群搭建
查看>>
spring boot + mybatis 同时访问多数据源
查看>>
URL中汉字转码
查看>>
[转]go正则实例
查看>>
Selector中关于顺序的注意事项
查看>>
小黑小波比.清空<div>标签内容
查看>>
Java中的ExceptionInInitializerError异常及解决方法
查看>>
Spring 注入bean时的初始化和销毁操作
查看>>