zoukankan      html  css  js  c++  java
  • 2_http协议详解

    当客户端与服务器进行交互时,就存在web请求,这种请求都基于统一的应用层协议(http协议)交互数据。它允许将HTML文档从web服务器传送到web浏览器。

    http协议是无状态的协议。无状态是指web浏览器和web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,web服 务器返回响应,连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,服务器端不能主动向客户端发送数据。

    除了通过浏览器发起HTTP请求,也可以通过linux的curl命令发起HTTP请求。浏览器在HTTP协议方面只不过多了HTML渲染的功能,让用户看到更直观的界面。

    URL统一资源定位符:

    格式:scheme://login:password@address:port/path/to/resource?query_string#fragment

    scheme协议名称:http,https(SSL),ftp,mailto(SMTP)

    伪协议:一部分浏览器内部支持的协议并不需要向外部请求资源,而是调用本地浏览器的脚本解析功能或是其他功能。比如:javascript:和data:等。

    login:password:访问资源的身份验证,此处身份验证的字段只与URL开端指定的协议有关,和实际请求的内容无关。如果没有身份验证字段,浏览器默认以匿名方式访问资源。

    address:服务器地址   port:服务器端口

    /path/to/resource:层级文件路径

    ?query_string:查询字符串(这里会引发跟多安全问题)

    #fragment:片段ID

    http请求:包括三部分,分别是请求行(请求方法,请求的资源路径,http版本),请求头(请求的主机地址,浏览器的标识),请求体(请求正文,可选,最常出现在POST方法中)。

    请求头:

    Host:用于指定请求的URL中的主机名称。

    User-Agent:提供浏览器或其他发送HTTP请求的客户端软件的相关消息。

    Referer:指示当前请求源自哪个URL

    Accept:这个字段将客户端允许接受的内容类型传输给服务器端。

    Accept-Language:用于声明浏览器可以支持什么语言。

    Accept-Encoding:用于声明浏览器可以支持的编码类型。

    Cookie:它是一段文本,用来表示请求者的身份(服务器使用Set-Cookie消息头来设置cookie,一般用于身份验证)

    Connection:通知通信的另一方,是否在完成HTTP传输后关闭TCP连接。

    x-forward-for:它代表请求端的IP,可以有多个,以逗号分开。

    HTTP响应:也是包括三部分,响应行(HTTP版本,状态码以及消息"OK"),第二行至末尾的空白行是响应头,之后是响应正文,是服务器向客户端发送的HTML数据。

    Accept-Ranges:

    Content-Length:指定消息主体的字节长度。

    Content-Type:规定消息主体内容类型

    Conetent-Language:规定消息主题的语言

    Date:表示消息产生的日期和时间。

    Server:说明所使用的web服务器软件,和服务器操作系统

    Set-cookie:用来向客户端传递/更新cookie。

    Location:服务器通过这个头告诉浏览器去访问哪个页面,浏览器收到这个请求之后,会立即访问Location头所指向的页面。通常和302状态码使用。

    Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器。

    http请求方法:

    GET POST HEAD(不会出现在响应消息里) TRACE(和ping命令类似) OPTIONS(会列出所能支持的方法列表) PUT DELETE CONNECT

    HTTP状态码:是HTTP响应的必要部分。

    200~299成功  300~399重定向和其他状态信息  400~499客户端错误  500~599服务器端错误

    200 OK  301 Moved Permanently 302 Found 303 See Other

    404 Not Found  403 Forbidden   401 Unauthorized  400 Bad Request

    HTTP代理:

  • 相关阅读:
    [Ljava.lang.String; cannot be cast to java.lang.String 报错的原因
    ajaxfileupload多文件上传
    如何设置 html 中 select 标签不可编辑、只读
    docker
    nvm use 指定版本后无效 win7
    win7禁用Adnimistrator账号登录
    win10安装tomcat9
    webstorm命令行无法使用node-gyp进行编译
    tomcat7.0安装笔记
    win10 java1.7安装笔记
  • 原文地址:https://www.cnblogs.com/Time-dog/p/5810733.html
Copyright © 2011-2022 走看看