一、前言部分(概念)

  • 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. Android教程-03 常见布局的总结

    常见的布局 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 Android的图形用户界面是由多个View和ViewGroup构建出来的.View是通用的UI窗体小组件,比如按钮(Button)或者文 ...

  2. 解决TortoiseSVN中out of date问题的一个方法

    http://blog.csdn.net/freefalcon/article/details/645058 从去年开始,公司的代码管理从CVS转向了subvsersion,后者确实是前者的一个飞跃, ...

  3. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  4. 原生js实现最简单的瀑布流布局

    文章地址 https://www.cnblogs.com/sandraryan/ 瀑布流:瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动, ...

  5. poj 3601Tower of Hanoi

    Tower of Hanoi Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 1895   Accepted: 646 De ...

  6. mysql-python安装

    操作系统:ubuntu16.04-gnome 首先要安装mysql数据 sudo apt install mysql-server 我们使用pip进行安装第三方模块 系统python版本为2.7.12 ...

  7. H5 数据存储localStorage

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. v-for(:key)绑定index、id、key的区别

    Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究 在github上阅览README.md以获得最佳阅读体验,点这里 v-for响应式key ...

  9. Python--day38---进程间通信--初识队列(multiprocess.Queue)

    初识队列: 进程间通信IPC(Inter-Process Communication) 1,队列的方法: q = Queue(5)1,q.put(1) #把1放进队列 2,print(q.full() ...

  10. Spring Boot Admin-应用健康监控后台管理

    Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI. 1. 什么是Spring ...