什么时候用GET?什么时候用POST?

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

一、

GET和POST两种方法都是将数据送到服务器,但你该用哪一种呢?

HTTP标准包含这两种方法是为了达到不同的目的。POST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。

当请求无副作用时(如进行搜索),便可使用GET方法;当请求有副作用时(如添加数据行),则用POST方法。一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制。

若符合下列任一情况,则用POST方法:

* 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
* 若使用GET方法,则表单上收集的数据可能让URL过长。
* 要传送的数据不是采用7位的ASCII编码。

若符合下列任一情况,则用GET方法:

* 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
* 请求结果无持续性的副作用。
* 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。

 


二、

最近开到一段W3的资料,写的不错,原文地址如下:http://bu-choreography.iteye.com/admin/blogs/new。翻译总结如下: 
快速判断: 
如下情况使用GET方法:客户端与服务端的交互像是一个提问(如查询操作、搜索操作、读操作) 
如下情况使用POST方法: 
       1.交互是一个命令或订单(order),比提问包含更多信息 
       2.交互改变了服务器端的资源并被用户察觉,例如订阅某项服务 
       3.用户需要对交互产生的结果负责 
听起来稍微明白了一点,接着来。 
根据HTTP协议规定,GET方法可以携带交互需要的所有数据,因此你会看到搜索百度或谷歌的时候,点击搜索形成的URL包含了你刚才的搜索关键字,没有安全需求的请求把信息放URL里没关系,但是你访问银行网站的时候,不希望把账户、密码这些放在URL里被人拦截是吧,所以HTTP设计了POST请求,他可以把请求信息放在HTTP请求里,具体格式这里不细说了,这样你就不能简单的从URL里找到账户、密码了。 
讲完这些,是不是比较清楚了呢。 
文章还例举了几个曾经的HTTP请求限制。 
1.URI不能超过256个字符。这个限制在有些服务器里是存在的,有的服务器为了网络安全,为了防止拒绝式攻击会把URL字符限制在4000字符 
2.你提交了GET请求,又马山按了backspace键,会导致get方法被重新执行 
3.你在一个页面使用了安全协议,跳转到了另一个使用不安全协议的页面时,会导致安全数据泄漏给第二个页面。

 


以上一中内容摘自《Web Database Application with PHP and MySQL, 2nd Edition》一书,中文版《PHP & MySQL Web数据库应用开发指南》。英文原文内容如下: 
GET versus POST

Both the GET and POST methods send data to the server, but which method should you use?

The HTTP standard includes the two methods to achieve different goals. The POST method was intended to create a resource. The contents of the resource would be encoded into the body of the HTTP request. For example, an order form might be processed and a new row in a database created.

The GET method is used when a request has no side effects (such as performing a search) and the POST method is used when a request has side effects (such as adding a new row to a database). A more practical issue is that the GET method may result in long URLs, and may even exceed some browser and server limits on URL length.

Use the POST method if any of the following are true:

* The result of the request has persistent side effects such as adding a new database row.
* The data collected on the form is likely to result in a long URL if you used the GET method.
* The data to be sent is in any encoding other than seven-bit ASCII.

Use the GET method if all the following are true:

* The request is to find a resource, and HTML form data is used to help that search.
* The result of the request has no persistent side effects.
* The data collected and the input field names in a HTML form are in total less than 1,024 characters in size.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑运算符与逻辑表达式

1 #include <stdio.h>2 3 int main()4 {5 int a0;int b0;6 if(a&&b)//a&&ba的逻辑值为0&#xff0c;则执行else7 {8 printf("a&&b is true\n");9 } 10 else 11 { 12 printf("a&&…

linux/shell相关知识点

阿里Linux Shell脚本面试25个经典问答 Linux运维工程师12道面试题整理 感谢作者分享&#xff01;

20180601]函数与标量子查询2.txt

[20180601]函数与标量子查询2.txt --//昨天看http://www.cnblogs.com/kerrycode/p/9099507.html链接,里面提到: 通俗来将&#xff0c;当使用标量子查询的时候&#xff0c;ORACLE会将子查询结果缓存在哈希表中&#xff0c; 如果后续的记录出现同样的值&#xff0c;优化器通过缓存…

ODP 使用 ArrayBind 时可能会遇到的巨坑 'System.IConvertible' 的解决方法

Unable to cast object of type System.Nullable1[System.Int16][] to type System.IConvertible 一段代码99%不会出错&#xff0c;0.1%会报上边的错&#xff0c;debug费了老鼻子时间&#xff0c;发现此坑很深。异常是 cmd.ExecuteNonQuery() 抛的&#xff0c;实际是 para.Valu…

eclipse快速定位到错误处

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程 以前都是按着滚动条往下拉&#xff0c;找到错误的地方&#xff0c;有时比较多的时候就很麻烦。 其实eclipse是可以直接快速定位的&#x…

C语言中的“”和“”

先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i 1; i i << 2; //把i里的值左移2位 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以…

网站性能优化的三重境界

这篇文章是关于网站性能优化体验的&#xff0c;性能优化是一个复杂的话题&#xff0c;牵涉的东西非常多&#xff0c;我只是按照我的理解列出了性能优化整个过程中需要考虑的种种因素。点到为止&#xff0c;包含的内容以浅显的介绍为主&#xff0c;如果你有见解能告知我那再好不…

Linux使用RSA实现免密登录(原理)

参考文献Linux密钥rsa加密原理和ssh使用密钥实现免密码登录 感谢作者分享&#xff01;

PYTHON 爬虫笔记十一:Scrapy框架的基本使用

Scrapy框架详解及其基本使用 scrapy框架原理 Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 其可以应用在数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的&#xff0c; 也可…

java设计把两个字符串的值交换 而不使用中间变量

public class Test {public static void main(String[] args) {String s1 "aaa";String s2 "cccx";s1 s1 s2;s2 s1.substring(0, s1.length()-s2.length());s1 s1.substring(s2.length());System.out.println(s1" - "s2);}}

服务器返回值 解释 ajax提交方式 后台数据刷进前端

转载于:https://www.cnblogs.com/liuliang389897172/p/9120715.html

no typehandler found for property XXXX 解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. ssm框架下 启动服务报错如题。 2. 原因&#xff1a; 我的情况是&#xff0c;代码中实体属性映射书写和数据库字段名字不一致。 数据…

C++主流预处理,编译和链接过程

在C的程序的编写过程中&#xff0c;基本上都碰到过LNK2005的错误吧&#xff0c;下面就针对这个问题详细分析&#xff1a;首先&#xff0c;预处理阶段&#xff1a;这一过程&#xff0c;主要针对#include和#define进行处理&#xff0c;具体过程如下&#xff1a;对于cpp文件中经常…

shell中sed -i特殊字符

可参考文献&#xff1a; Linux生产环境上&#xff0c;最常用的一套“sed“技巧 看懂shell中的各种语句

Win10远程桌面提示你的凭据不工作的处理方法

需要确保在组策略编辑器&#xff08;WinR 输入 gpedit.msc &#xff09;中计算机配置->Windows设置->安全设置->本地策略->安全选项->右侧的网络访问:本地帐户的共享和安全模型。修改为使用经典模式即可&#xff01;

子网掩码255.255.0.0与255.255.255.0的区别

先介绍子网掩码&#xff1a;子网掩码&#xff0c;是一种用来指明一个IP地址的哪些位标识的是主机所在的子网&#xff0c;以及哪些位标识的是主机的位掩码。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。子网掩码只有一个作用&#xff0c;就是将某个IP地址划分成…

日期格式不符合要求:Unparseable date: quot;3e8a4d83533744c698216535a65850c0quot;

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错如题 2. 原因&#xff1a;使用token 记录当前登陆用户&#xff0c;token值已经过期。 HttpClientUtil.doPost&#xff08;&…

Spring中都用到了哪些设计模式?

Spring 框架中用到了哪些设计模式&#xff1a; 工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。 代理设计模式 : Spring AOP 功能的实现。 单例设计模式 : Spring 中的 Bean 默认都是单例的。 模板方法模式 : Spring 中 jdbcTemplat…

解决火车票网上订票难的方案

春运是最热的话题&#xff0c;买火车票是最流行的事情&#xff1b;网上订票给大家带来了极大的便利&#xff0c;但是由于各种原因&#xff0c;网上订票成功率很低&#xff0c;至少比在淘宝上买东西困难多了。在下不才&#xff0c;试图提出其解决方案。 问题&#xff1a;并发访问…

小程序支付成功后跳转页面失败

在安卓报错 relaunch:fail can not invoka lelaunch in background&#xff0c;ios正常&#xff0c;换成别的跳转方式即可转载于:https://www.cnblogs.com/wang-xing/p/9488961.html