• java开发系列-Http协议


    概述

    HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。这种协议用来规定通信数据的格式。

    HTTP请求

    浏览器往服务器发送数据称之为请求。HTTP协议中规定请求组成部分:请求行、请求头、请求体。

    请求行:请求信息的第一行
    请求头:请求信息的第二行到空行结束
    请求体:空行一下的内容 只有POST请求才有请求体

    通过Google浏览器查看一个GET请求的请求信息

    请求行中说明了请求的方式,比如是GET还是POST请求。还有访问的资源、协议/版本。

    GET与POST请求

    GET请求会把参数放在url后面而POST请求会把参数放在请求体中,并且GET参数有大小限制,POST请求没有限制。GET请求没有请求体,而POST有请求体用于存放参数。

    HTTP协议版本

    HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

    HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头

    常见的HTTP请求头

    Accept: text/html, image/*  --支持数据类型 格式 大类型/小类型 ,mime类型
    Accept-Charset: ISO-8859-1 --字符集
    Accpet-Encoding: gzip --支持压缩
    Accept:-Language: zh-cn --语言环境
    Host: localhost:8080 --访问主机
    If-Modified-Since: Tue, 11 Jul 2000 18:27:52 GMT --缓存文件最后修改的时间
    Referer: http://localhost:8080/index.html -- 来自哪个页面 防盗链
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
    Cookie:
    Connection: close/Keep-Alive --连接状态
    Date:  Tue, 11 Jul 2000 18:27:52 GMT --时间
    

    HTTP响应

    服务器往浏览器写数据称之为响应。HTTP协议中规定响应组成部分:响应行、响应头、响应体。

    通过过Google浏览器查看一个GET请求的请求行


    响应行包含协议版本 状态码
    常见的状态码

    常见的HTTP响应头

    Location: http://www.coderhong.com --跳转方向 与302一起使用
    Server: apache tomcate -- 服务器型号
    Content-Encoding: gzip -- 数据压缩
    Content-Length: 80 --数据长度
    Content-Language: zh-cn --语言环境
    Content-Type: text/html; charset=GB2312 --数据类型
    Last-Moddified:Tue,11 Jul 2000 18:23:51 GMT --最后修改的时间
    Refresh:1; url=http://www.coderhong.com --定时刷新
    Content-Disposition: attachment; filename=aaa.zip -- 下载
    Set-Cookie: SS=Q0=5Lb_nQ; path=/search 
    Expires: -1 -- 缓存
    Cache-Control: no-cache --缓存
    Pragma: no-cache -- 缓存
    Connection:close/Keep-Alive --连接
    
  • 相关阅读:
    C++ tinyXml直接解析XML字符串
    留言板小程序开发笔记3
    如何去除 gvim 的 acp和 "option omnifunc is not set" 的问题
    如何修改bootstrap模态框的backdrop蒙版区域的颜色?
    Windows下卸载软件时提示 等待先前的卸载完成? 终止 dllhost.exe 进程
    thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?
    thinkphp中的Ueditor的使用, 以及如何传递编辑器内容到后台?
    留言板小程序开发笔记2
    分页器的js实现代码 bootstrap Paginator.js
    windows的gvim总是报错: +iconv fencview.vim
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8977425.html
Copyright © 2020-2023  润新知