如何理解get请求适合服务器端获取数据,post请求发送数据

其实二者都是在向服务器提交请求,如果非要说get是获取数据,post是提交数据的话,你可以从二者的区别理解:

  • GET请求和POST请求有什么区别?

    • get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,"?"后面是数据。这样会导致发送的数据回显在浏览器的地址栏上。(get请求在“请求行”上发送数据)

    • post请求发送数据的时候,在请求体当中发送。不会回显到浏览器的地址栏上。也就是说post发送的数据,在浏览器地址栏上看不到。(post在“请求体”当中发送数据)

    • get请求只能发送普通的字符串。并且发送的字符串长度有限制,不同的浏览器限制不同。这个没有明确的规范。

    • get请求无法发送大数据量。

    • post请求可以发送任何类型的数据,包括普通字符串,流媒体等信息:视频、声音、图片。

    • post请求可以发送大数据量,理论上没有长度限制。

    • get请求在W3C中是这样说的:get请求比较适合从服务器端获取数据。

    • post请求在W3C中是这样说的:post请求比较适合向服务器端传送数据。

    • get请求是安全的。get请求是绝对安全的。为什么?因为get请求只是为了从服务器上获取数据。不会对服务器造成威胁。(get本身是安全的,你不要用错了。用错了之后又冤枉人家get不安全,你这样不好(太坏了),那是你自己的问题,不是get请求的问题。)

    • post请求是危险的。为什么?因为post请求是向服务器提交数据,如果这些数据通过后门的方式进入到服务器当中,服务器是很危险的。另外post是为了提交数据,所以一般情况下拦截请求的时候,大部分会选择拦截(监听)post请求。

    • get请求支持缓存。

    • post请求不支持缓存。(POST是用来修改服务器端的资源的。)

      • post请求之后,服务器“响应的结果”不会被浏览器缓存起来。因为这个缓存没有意义。

  • GET请求和POST请求如何选择,什么时候使用GET请求,什么时候使用POST请求?

    • 怎么选择GET请求和POST请求呢?衡量标准是什么呢?你这个请求是想获取服务器端的数据,还是想向服务器发送数据。如果你是想从服务器上获取资源,建议使用GET请求,如果你这个请求是为了向服务器提交数据,建议使用POST请求。

    • 大部分的form表单提交,都是post方式,因为form表单中要填写大量的数据,这些数据是收集用户的信息,一般是需要传给服务器,服务器将这些数据保存/修改等。

    • 如果表单中有敏感信息,还是建议适用post请求,因为get请求会回显敏感信息到浏览器地址栏上。(例如:密码信息)

    • 做文件上传,一定是post请求。要传的数据不是普通文本。

    • 其他情况都可以使用get请求。

  • 不管你是get请求还是post请求,发送的请求数据格式是完全相同的,只不过位置不同,格式都是统一的:

    • name=value&name=value&name=value&name=value

    • name是什么?

      • 以form表单为例:form表单中input标签的name。

    • value是什么?

      • 以form表单为例:form表单中input标签的value。


数据量限制:get有数据量限制,而post没有
等幂性:get请求的数据不会修改服务器的状态,如读取静态文件(图片、html文件等),所以这里你可以理解为是获取数据,而post一般会改变服务器的状态.比方说添加某一条数据(你所说的提交数据),那么此数据将会更改数据库的记录 ,所以,你可以理解post是向服务器提交数据

get是向服务器获取数据,而post是向服务器传递数据   其实是英文文档翻译的时候断章取义了,文档中可出这点(HTML规范在技术上定义了“GET”和“POST”之间的区别,前者意味着表单数据将(通过浏览器)编码成URL,而后者意味着表单数据将出现在消息正文中。但是规范也给出了使用建议,当表单处理是“幂等”时,应该使用“GET”方法,并且仅在那些情况下。作为一种简化,我们可以说“GET”基本上是为了获取(检索)数据,而“POST”可能涉及到存储或更新数据、订购产品或发送电子邮件等任何事情。)

The HTML specifications technically define the difference between "GET" and "POST" so that former means that form data is to be encoded (by a browser) into a URL while the latter means that the form data is to appear within a message body. But the specifications also give the usage recommendation that the "GET" method should be used when the form processing is "idempotent", and in those cases only. As a simplification, we might say that "GET" is basically for just getting (retrieving) data whereas "POST" may involve anything, like storing or updating data, or ordering a product, or sending E-mail.

所以一般GET使用传个ID值给服务器,让服务器通过ID取出数据,返回给客户端。

用户填写的数据,都用POST方法上传

但是实际开发中  不用这么细化.因为get不安全,大多都用post

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP是一种常用的服务器编程语言,可以使用它来发送POST和GET请求POST请求通常用于向服务器提交数据,而GET请求通常用于从服务器获取数据发送POST请求的方法是使用PHP的curl库。curl库是一个强大的工具,能够向服务器发送并接收数据。要发送POST请求,需要定义一个url,一个包含需要提交的数据的数组,并打开curl会话。 例如,下面的代码向名为“example.com”的URL发送POST请求: $url = 'http://example.com'; $data = array('name' => 'John Doe', 'email' => 'jdoe@example.com'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec($ch); curl_close($ch); 其中,curl_setopt()方法用于设置会话选项,CURLOPT_URL选项用于设置URL,CURLOPT_POST选项用于指定使用POST请求,CURLOPT_POSTFIELDS选项用于指定提交的数据,在这个例子中,是一个包含名字和电子邮件地址的数组。 发送GET请求也很简单,只需要使用PHP的file_get_contents()函数即可。该函数使用指定的URL返回一个字符串。 例如,下面的代码将使用GET请求从名为“example.com”的URL获取数据: $url = 'http://example.com'; $data = file_get_contents($url); 以上是使用PHP发送POST和GET请求的简单方法,不断了解和学习这些方法,可以让开发者更加熟练地处理与服务器之间的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值