一、前言部分(概念)

  • URL(统一资源定位符 )的作用:使用 URL 可以确定一个资源所在的位置

  • HTTP(超文本传输协议)

    • 基于 TCP/IP 的定义数据在万维网中如何通信的协议

    • 设计目的是保证客户端与服务器之间的通信

  • 在客户端向服务器发起请求时,两种最常用的 HTTP 方法是:GET 和 POST

  • 在 html 页面的 form 表单中,如果不指定 method 提交方式,默认是以 GET 方式提交

二、对比 GET 与 POST

二者最大的差异

请求参数所在的位置不同

  • GET 方式把参数包含在URL,即请求行中,参数会显示在浏览器地址栏上

  • POST 方式的参数包含在请求体中

正是因为请求参数所在的位置不同,从而造成了:

  1. GET 请求时 URL 长度受限(理论上get请求只能携带2k大小的数据)

  2. POST 请求提交参数的相对安全

这里的相对安全只是单纯地因为 post 请求参数包含在请求体中,不会显示在地址栏上被看到

GET 与 POST 请求本质上并无区别

因为 GET 和 POST两种请求方式都是基于 TCP 协议

差异的产生就如第一点所说,请求参数所在的位置不同。而浏览器和web服务器又限制了 URL 的长度,

为什么限制URL的长度?

服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构

造长 URL 来攻击)考虑,会给 URL 长度加限制。

深层了解:POST 请求产生两个数据包?

GET 产生一个 TCP 数据包,POST 产生两个 TCP 数据包

其实并不是所有浏览器都会在 POST 请求中发送两次包,Firefox 就只发送一次

两次发包并不是 POST 的必然性,只是因浏览器软件而异

三、两种请求方式如何灵活使用?

GET - 从指定的资源请求获取数据。

POST - 向指定的资源提交要被处理的数据

当数据量较大的请求(提交表单、上传文件)时,传递密码及隐私内容时采用POST;

其余情况可用get。

使用 GET 请求如果需要传递参数,那么参数只能通过以下方式传递:

url?参数名=参数值&参数名=参数值
add.do?name=value&name=value

四、常见的状态码

在 HTTP 请求中,通过状态码可以清晰的看到请求的结果,如果请求出错,可以通过状态码来锁定问题所在

HTTP协议中提供了许多的状态码,列举我们常见的:
200 OK 返回正常
302 Found 重定向,让浏览器跳转到其它地址
304 Not Modified 服务端资源无变化,可使用缓存资源
400 Bad Request 请求参数不合法
401 Unauthorized 请求需要用户的身份认证
403 Forbidden 服务端禁止访问该资源
404 Not Found 服务端未找到该资源
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
500 Internal Server Error 服务端异常

五、RESTful 风格补充

RESTful风格中,常用的方法有4种,分别是GET,POST,PUT,DELETE。URL 定位了这个资源,HTTP中的GET,POST,PUT,DELETE就是对应着对这个资源的查,増,改,删4个操作。

参考链接

HTTP请求中的GET-POST方式的更多相关文章

  1. AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

    转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...

  2. AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式

    HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...

  3. [转]AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

    转载至 http://blog.csdn.net/mhmyqn/article/details/25561535 最近在写接收第三方的json数据, 因为对java不熟悉,有时候能通过request能 ...

  4. 在Ajax请求中什么时候用GET方式什么时候用POST方式?

    当我们有大量数据要传送时最好的办法是一次发出多个只传递少量信息的Ajax调用时.如果你正用一个Ajax调用发送大量数据,那么最好是结束这种做法,因为这样做并不能节约时间. 因此,需要传送大量数据能成为 ...

  5. 工具类: 用于模拟HTTP请求中GET/POST方式

    package com.jarvis.base.util; import java.io.BufferedReader; import java.io.IOException; import java ...

  6. 浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?

    浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式? 存入 IndexdDB 写入 COOKIE 放在 URL 参数 写入 Session 使用 POST ...

  7. java Web中页面跳转方式之请求转发

    1.在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在Servlet01中setAttribute()保存数据在Servlet02中由getAt ...

  8. AGS中通过FeatureServer插入数据失败、插入数据在WMTS请求中无法显示以及version概念的讨论

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在多个项目中,当我方接口给其他部门人员使用时出现了插入数据失 ...

  9. SpringMVC无法获取请求中的参数的问题的调查与解决(1)

    *更新:本文第一版中犯了比较大的错误,无论@RequestBody还是@RequestParam注解一样,都会使用全局的Encoding进行解码,会导致特殊编码的参数值丢失. 只要抛弃掉注解,就完全可 ...

随机推荐

  1. iptables 过滤条件(Matches)

    iptables可让你设置多种过滤条件,但是某些条件需要核心有提供相关功能才行.Iptables本身內建一般性的Internet Protocol (IP) 过滤条件,也就是說,即时沒载入任何扩充模组 ...

  2. oracle WHERE子句中的连接顺序

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 例如: (低效,执行时间1 ...

  3. H3C 网络号和主机号

  4. H3C IP及其相关协议

  5. html--图片img

    一.图片的基本格式 当前万维网上流行的图像格式以GIF及JPEG为主,另外还有一个PNG.以下做分别介绍: 1.GIF格式:采用LZW压缩,是以压缩相同颜色的色块来减少图像大小的.(LZW压缩是一种能 ...

  6. centos6 名字服务dnsmasq配置

    1 主机名配置 主机hd1配置(后面配置为名字服务器) [grid_hd@hd1 Desktop]$ cat /etc/sysconfig/network NETWORKING=yes HOSTNAM ...

  7. PHP 面试题 一

    1.用PHP打印出前一天的时间格式是2017-5-10 22:21:21(2分) 月,日没有前导零:2017-5-1 22:21:21echo date("Y-n-j H:i:s" ...

  8. H3C HDLC协议使用限制

  9. Python--day40--threading模块的几个方法

    import time import threading #threading.get_ident() 查看当前进程号 def wahaha(n): time.sleep(0.5) print(n,t ...

  10. H3C DHCP中继基本配置