• HTTP请求解析--从一个请求开始


    先来看看一个http请求实例

    请求行: POST /chapter17/user.html HTTP/1.1

    请求头:

    Accept: application/json, text/javascript, */*; q=0.01

    Accept-Encoding: gzip, deflate

    Accept-language: zh-CN,zh;q=0.8

    Connection: keep-alive

    Content-Length: 38

    Content-Type: application/x-www-form-urlencoded; charset=UTF-8

    Host: 192.168.1.66:92

    Orgin: http://localhost:3000/

    Referer: http://localhost:3000/

    User-Agent:
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------

    请求行

    组成: 请求方法 空格 请求URL的path 空格 协议名及版本号

    请求方法: 常见的即POST、GET,此外还包括PUT、HEAD、DELETE、OPTIONS、TRACE

    请求URL的Path: path= pathname+search, 与请求头里的Host组成完整url地址

    备注: host= hostname+port,对于网址的组成可查看: http://www.cnblogs.com/yanze/p/6009127.html,这个很重要

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    请求头

    参数详解:

    Accept  客户端能够接受的MIME类型(别发其他类型给我)

    application/json, text/javascript, */*; q=0.01,由此可知可接受application/json, text/javascript,但*/* q=0.01又是什么?

    */*,*是通配符,即任何字符串,*/*代表可为任何MIME类型

    q(q-factor品质因数)为权重,代表对某种类型的喜好程度,以‘,’为分割标识,默认为1

    application/json, text/javascript, */*; q=0.01=>application/json;q=1, text/javascript;q=1, */*; q=0.01,解释起来就是浏览器可接受任何文件,但最倾向application/json和 text/javascript

    Accept-Encoding 浏览器能接受的编码方式

    默认为identify,identify用于指代自身(例如:未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。

    Accept-Encoding: * 任何类型

    Accept-Encoding: gzip, deflate gzip与deflate类型

    Accept-language 浏览器可接受的语言

    zh-CN,zh;q=0.8 zh-CH(zhongwen china中文简体)(zh代表中文全体,包括简体、繁体、方言等)

    Connection

    详情可查看: http://www.cnblogs.com/yanze/p/7750239.html

    Content-Length 表示发送给对方的消息主体的大小

    大小单位为十进制数字表示的八位元组的数目

    Content-Type 当前发送信息的MIME类型

    Host 当前发送请求的浏览器的host

    host=hostname+port

    Orgin(源头)

    origin= protocal+hostname+port

    Referer(引用页)

    referer= protocal+hostname+port+search

    referer原本是referrer,referer是误称,但错的人多了也就正确了。。

    origin与referer与诸多区别:

    1.origin只用于Post请求,Referer用于所有请求

    2.设置referer容易被csrf攻击,origin更具安全性,详见:http://blog.csdn.net/zdavb/article/details/51161130

    User-Agent(用户代理)

    User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extentions>

    如: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

    不同浏览器,不同系统会有不同的user-agent,这涉及到浏览器大战的那段鸡飞狗跳的历史,详情可见: http://www.cnblogs.com/egger/archive/2013/04/20/3032070.html

    一言以蔽之: 现今混乱的场面, IE是始作俑者

    
    
    
  • 相关阅读:
    Delphi程序结构
    SQL存储过程解密 Encrypted object is not transferable, and script can not be generated

    在河南呢
    还在河南,写随笔吧
    HAVING
    mIRC
    关于CAP理论
    开篇
    移动信息系统
  • 原文地址:https://www.cnblogs.com/yanze/p/7766103.html
Copyright © 2020-2023  润新知