zoukankan      html  css  js  c++  java
  • HTTP请求中的GET-POST方式

    一、前言部分(概念)

    • 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个操作。

    参考链接

  • 相关阅读:
    Django内置Admin解析
    python项目 配置文件 的设置
    Django---信号
    bash配置文件
    week4 作业
    shell基础练习题
    shell基础
    shell变量与运算
    week3 作业
    文件权限管理
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/11190554.html
Copyright © 2011-2022 走看看