请求报文的方法及get与post的区别
请求报文的方法及get与post的区别
请求的起始以方法作为开始,方法用来告诉服务器要如何做。
在开发中通常有两种请求方式。
- get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 URI 只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
- post方式: 用来想目的服务器发出请求,要求它接收被附在请求后的实体,并把它当作请求队列中请求 URI 所指定资源的附加新子项,所以 post 请求可能会导致新的资源的建立和 / 或已有资源的修改。
除了以上两种常用的请求方式,还有另外五种请求方法。说明如下。
(1) HEAD: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
(2)DELETE: 请求服务器删除指定的页面。
(3)CONNECT: HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
(4)OPTIONS: 允许客户端查看服务器的性能。
(5)TRACE: 回显服务器收到的请求,主要用于测试或调试。
get与post的区别
图片摘取于百度
接下来,根据百度的答案逐一分析。
(1) get是从服务器上获取数据,post是向服务器传送数据。
看一下HTTP RFC 文档对这两种请求的定义。
根据HTTP规范,get用于信息获取,而且应该是安全的和幂等的。
post表示可能会修改服务器上资源的请求。
通俗的来讲,我们可以从两个角度看待get请求。
从发送请求的角度,get请求相当于我们在数据库中做了查询的操作,这样的操作不影响数据库本身的数据。
从接收返回数据的角度,幂等的含义简单地说就是发送get请求不改变返回数据的内容。
例如,你发送get请求获取测试论坛的首页信息。首页信息并不会因为你发了请求而改变。因为get用于不改变返回信息内容的请求,所以HTTP规范定义它是安全的,就像对数据库不做增删改操作,只查询数据一样。
而post的用途呢,表示会改变服务器上所返回资源信息的请求,相当于我们在数据库中做了修改的操作,会影响数据库本身的数据。
例如,你在测试论坛网上发了帖子,做了评论,得到了积分等。这种情况下,资源状态被改变了,所以HTTP规范定了post请求是可能会改变服务器资源的请求。
通过HTTP规范的定义,可以看出get和post都是用作传递及获取服务器信息的请求。get请求也可以向服务器传递数据,post请求也需要服务器返回数据。
(2)get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
这个答案是在叙述get和post表现形式的不同
get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以 ? 分割URL和传输数据,多个参数用 & 连接。post请求就是把提交的数据放置在HTTP包的 body 中。
这种形式是HTML标准对HTTP协议用法的约定,并不能作为post和get请求的区别。现在也有很多Web Server支持get中包含body的表现形式。
(3)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
这个答案有点不知所云,获取请求变量的值是由服务器端的配置所决定的。这些与post和get请求的区别完全没有关系。
(4)get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
在HTTP协议规范中,没有对传输的数据大小进行限制,也没有对URL长度进行限制。
如果说对于用get请求URL上有限制的话,取决于以下两方面。
1.HTTP客户端浏览器自己的限制: 如IE限定URL长度为2083字节,opera是4050,Netscape是8192等。
2.Web服务器为了效率及安全的考虑,,所以修改Apache、IIS的配置对post提交数据大小进行的限制。
限制并不能作为post和get请求的区别,所以这个答案继续是错的。
(5)get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
我们猜测一下这个答案的坐着为何这样说,应该是由于post请求在URL上看不到传输数据吧。
但是在浏览器地址栏上看不到并不能说明它安全,如果你使用截数据包的工具查看没有加密过的post请求,同样可以清晰地看到post报文的内容。
所以说安全不安全根本不是get和post的区别,只和两者是否加密有关。
GET 和 POST 本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
请求报文的方法及get与post的区别的更多相关文章
- WCF和WebService中获取当前请求报文的方法
WCF中: 1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNe ...
- TIdHTTP get参数带中文解决方法--请求报文
Post 看起来稍微复杂先,暂不讨论.post 目前按照一般方法有中文名也可以. 拼接时:pointname=九记餐厅&begintime=2017-03-01 00:00:00& 有 ...
- Python编程系列---获取请求报文行中的URL的几种方法总结
在浏览器访问web服务器的时候,服务器收到的是一个请求报文,大概GET请求的格式大概如下: 先随便拿到一个请求报文,蓝色即为我们要获取的 GET /index.html HTTP/1.1 Hos ...
- Axis通过方法获取webService请求报文
MessageContext messageContext = _call.getMessageContext(); Message reqMsg = messageContext.getReques ...
- HTTP请求报文支持的各种方法
常见的HTTP方法如下: 1.GET GET是最常用的方法.通常用于请求服务器发送某个资源. 2.HEAD HEAD与GET的行为类似,但服务器在响应中只返回首部,不会返回实体的部分.这就允许客户端在 ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- [httpserver]如何解析HTTP请求报文
这个http server的实现源代码我放在了我的github上,有兴趣的话可以点击查看哦. 在上一篇文章中,讲述了如何编写一个最简单的server,但该程序只是接受到请求之后马上返回响应,实在不能更 ...
- HTTP请求报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文 一个HTTP请求报文由请求行(request line ...
- HTTP 请求报文 响应报文
引言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发 ...
随机推荐
- POI读取xls和xlsx
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- Tomcat你很少使用的安全管理SecurityManager
试想一下,如果你的JSP页面中包含一句代码“System.exit(1);”,你的web应用访问到该JSP时,会发生什么? 一般使用tomcat可能都没有注意到这个问题,本篇主要讲述tomcat 6中 ...
- Node Sass could not find a binding for your current environment
Node环境从8升级到10后,Node Sass could not find a binding for your current environment 标签(空格分隔): Node Node环境 ...
- Mysql学习---SQL测试题之表结构
创建表结果和数据准备[直接执行即可] /* Navicat MySQL Data Transfer Source Server : ftl1012 Source Server Version : 50 ...
- 跳舞玩偶Doll正式上线
有问题或者建议大家可以联系我的QQ 914287516 或者qq邮箱 官方qq群 325631077:
- Webpack笔记(一)——从这里入门Webpack
准备了挺久,一直想要好好深入了解一下Webpack,之前一直嫌弃Webpack麻烦,偏向于Parcel这种零配置的模块打包工具一些,但是实际上还是Webpack比较靠谱,并且Webpack功能更加强大 ...
- 阿里云maven仓库镜像mirror,速度超快
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http:/ ...
- 关于webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示
今天用webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示 解决办法:运行 sudo chown ...
- java中io创建文件和读取文件
简单了解IO流:https://www.cnblogs.com/weibanggang/p/10034325.html package com.wbg.iodemo1128; import java. ...
- selenium处理table表格
在UI自动化测试中经常会遇到表格的处理,下面是一点心得. 假设网页页面有一个表格,如何获取这个table的指定cell的值?你会说我们可以根据xpath定位到这个cell的行列,然后getText() ...