欢迎来到权重SEO优化网
首页 > SEO教程内容

Http定义与服务器交互的不同方法

2022-07-13 21:11:00   来源:权重SEO优化网    点击:
作者:admin

Http定义与服务器交互的不同方法与服务器交互的不同方法GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样想:一个URL地址,用来描述网络上的资源,HTTP中的GET,POST,PUT,DELETE对应该资源的查、改、增、删四个操作。在这里,大家应该有一个大致的了解,GET一般用于获取/查询资源信息POST一般用于更新资源信息。

http状态码

根据HTTP规范,GET它用于信息获取,应该是安全的幂等。

(1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求不应产生副作用。也就是说,它只是获取资源信息,就像数据库查询一样,不会修改、增加数据,也不会影响资源的状态。

* 注:这里安全的含义只是指非修改信息。

(2).等等意味着对等URL多个请求应返回相同的结果。让我在这里解释一下幂等这个概念:

幂等(idempotent、idempotence)抽象代数中常见的是数学或计算机概念。
有几有几个定义:
对于单目操作,如果一个操作的结果与一个操作的结果相同,相同,那么我们称之为权力等。例如,绝对值操作就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x)?=?x。

看完以上解释,应该能理解GET等等。

但在实际应用中,上述两项规定并不那么严格。引用他人文章的例子:例如,新闻网站的头版不断更新。虽然第二个请求将返回一批不同的新闻,但该操作仍然被认为是安全和强大的,因为它总是返回到当前的新闻。从根本上说,如果目标是当用户打开链接时,他可以确保他没有从自己的角度改变资源。

根据HTTP规范,POST表示可以修改服务器上的资源请求。

继续引用以上例子:或者以网站为例,读者应该通过对新闻发表评论POST由于评论提交后网站的资源不同,或者资源被修改。

上面大概说了一下HTTP规范中GET和POST的一些原理性的问题。但在实际的做的时候,很多人却没有按照HTTP这个问题的原因有很多,比如:

1.许多人贪图便利,更新资源GET,因为用POST必须要到FORM(表格),会有点麻烦。

2.事实上,资源的增加、删除、改变和检查可以通过GET/POST完成,无需使用PUT和DELETE。

3.另一早期Web MVC框架设计师没有意识到URL它被视为抽象资源和设计,因此传统上存在一个严重的问题Web MVC基本上只支持框架GET和POST两种HTTP不支持方法PUT和DELETE方法

* 简单解释一下MVC:MVC本来是存在的Desktop程序中的,M指数据模型,V指用户界面,C是控制器MVC以M和为目的V实现代码分离,使同一程序能够使用不同的表达形式。

以上三点典型地描述了旧的风格(不严格遵守)HTTP规范),随着结构的发展,现在出现了REST(Representational State Transfer),一套支持HTTP这里不多说规范的新风格,可以参考《RESTful Web Services》。

说完原理问题,我们再从表面现象上看GET和POST的区别

1.GET要求的数据将被附加URL之后(也就是把数据放在数据上HTTP协议头),以协议头),分割URL参数之间传输数据&相连,如:login.action?name=hyddd&password=idontknow&verify=你好。如果数据是英文字母/数字,如果是空格,则将其转换为 ,如果是中文/其他字符,则直接把字符串用BASE64加密,你好,其中%XX中的XX以16进制表示符号ASCII。

POST将提交的数据放在是的HTTP包的包体。

2."GET理论上,提交的数据最多只能是1024字节,POST没有限制,可以传输大量数据,IIS4中最大为80KB,IIS5中为100KB"??!

以上句子是我从其他文章转来的。事实上,这是错误和不准确的:

(1).首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL然后提交数据GET跟随可提交的数据量URL长度直接相关。而实际上,URL参数上限没有问题,HTTP协议规范不正确URL限制长度。这种限制是特定浏览器和服务器的限制。IE对URL长度限制为2083字节(2K 35)。对于其他浏览器,例如Netscape、FireFox理论上没有长度限制,这取决于操作系统的支持。

请注意,限制是整体URL长度,而不仅仅是你的参数值数据长度。[见参考资料5]

(2).理论上讲,POST没有大小限制,HTTP协议规范没有大小限制,说:POST数据量存在80K/100K尺寸限制不准确,POST服务器处理程序的处理能力是没有数据限制的。

对于ASP程序,Request处理每个表单域的对象有100K的数据长度限制。但如果使用Request.BinaryRead没有这样的限制。

从这个延伸出来,对IIS 6.出于安全考虑,微软增加了限制。我们还需要注意:

1).IIS 6.0默认ASP POST最数据量为200KB,每个表单域限制是100KB。
2).IIS 6.默认上传文件的最大尺寸为4MB。
3).IIS 6.默认最大请求头160KB。
IIS 6.以前没有这样的限制。[见参考资料5]

所以上面的80K,100K可能只是默认值(注:关于IIS4和IIS我还没有确认5的参数),但肯定可以自己设置。因为每个版本IIS这些参数的默认值不同,请参考相关参数IIS配置文档。

在ASP服务端获取GET请求参数用Request.QueryString,获取POST请求参数用Request.Form。在JSP中,用request.getParameter(\"XXXX\")虽然jsp中也有request.getQueryString()方法,但使用起来比较麻烦,比如:传一个test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。在PHP中,可以用$_GET和$_POST分别获取GET和POST中间的数据,和$_REQUEST则可以获取GET和POST两个请求中的数据。值得注意的是,JSP中使用request和PHP中使用$_REQUEST会有隐患,下次再写一篇文章总结。

POST比GET安全性高。

注:这里提到的安全性及以上GET安全不是同一个概念。以上安全的含义只是没有数据修改,这里的安全意义是真实的Security例如:通过GET提交用户名和密码的数据URL在上面,因为(1)登录页面可能会被浏览器缓存,(2)如果其他人查看浏览器的历史记录,其他人可以获得您的帐户和密码,此外,使用GET提交数据也可能导致Cross-site request forgery攻击。

总结一下,Get是向服务器索取数据的请求,Post在向服务器提交数据的请求中FORM(表),Method默认为"GET",实质上,GET和POST只是发送机制不同,不是一个接一个发!

原文:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

以上就是Http定义与服务器交互的不同方法的全部内容,

www.pr-seo.cn

权重SEO优化网

您好,请关注上方二维码

回复关键词“SEO诊断”

即可诊断出网站目前实际优化情况!

并根据您的网站情况为您制定最

佳的SEO优化方案!