关于HTTP更详细的说明

关于HTTP更详细的说明:

HTTP使用URI定位互联网中的资源:

URI和URL:

URI(统一资源标识符),URL(统一资源定位符)。

URL就是web浏览器访问Web页面时需要输入的网页地址。

URI是某个协议方案表示的资源的定位标识符,协议方案是指访问资源所使用的协议类型名称,采用HTTP协议时,协议方案就是http,除此之外,还有ftp、telnet、file等,标准的有30多个

几个URI的例子:


ftp://ftp.is.co.za/rfc/rfc1808.txt


http://ftp.is.co.za/rfc/rfc1808.txt


ldap://[2001:db8::7]/c=GB?objectClass?one


mailto:[email protected]


tel:+1-816-555-1212


telnet://192.0.2.16:80/

URI格式:

表示指定URI,要使用涵盖全部必要信息的绝对URI、绝对URL、以及相对URL

绝对URL的格式:

http://user:[email protected]:80/dir/index.htm?uid=#ch1


http://


协议方案名


user


登录信息(认证)


指定用户名密码作为必要登陆信息(身份认证)(可选项)


www.example.com


服务器地址


可是域名,ipv4,ipv6(形如[0:0:0:0:0:0:0:1]


80


服务器端口号


省略则使用默认端口号


/dir/index.htm


带层次的文件路径


指定服务器上的文件路径来定位特指的资源


uid=1


查询字符串


针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数(可选)


ch1


片段标识符


使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置),RFC没有明确规定使用方式,可选

简单的HTTP:

  • HTTP协议用于客户端和服务器端之间的通信
  • 通过请求和响应的交换达成通信
  • HTTP是不保存状态的协议

即协议本身不记录之前一切的请求或响应报文的信息

  • 使用URI定位互联网上的资源

指定请求URI的方式很多

URI为完整的请求URI

在首部字段Host中写明网络域名或IP地址

除此之外,不访问特定资源,而是对服务器本身发起请求,可用一个*代替请求URI

  • 告知服务器意图的HTTP方法

自身不带安全验证机制,任何人都可以上传文件,存在安全性问题若配合Web应用程序的验证机制,或架构设计采用REST标准的同类Web网站,就可能开放使用PUT方法

例子:


请求


PUT
/example.html HTTP/1.1

Host:www.hackr.jp

Content-Type:text/html

Content-Length:1560


响应


204
No Content(比如:该html已存在于服务器上)

如果请求的资源是文本,那就保持原样返回,如果像是CGI那样的程序则返回执行后的结果

GET:获取资源

POST:传输实体主体
PUT:传输文件

HEAD:获得报文首部
和GET方法一样,但不是返回报文主体部分,用于确认URI的有效性及资源更性的日期时间等
DELETE:删除文件
DELETE和PUT相反,用于删除文件,也不安全
OPTIONS:查询支持的方法
用来查询针对请求URI指定的资源支持的方法
例子:


        • 请求


          OPTION
          * HTTP/1.1

          Host:www.hackr.jp


          响应


          HTTP/1.1
          200 OK

          Allow:
          GET,POST,HEAD.OPTIONS

    • TRACE:追踪路径

      TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法

      客户端使用TRACE方法可以查询发送出去的请求是怎样被加工修改/篡改的,这是因为,请求想要连接到目标服务器可能会通过代理中转,TRACE方法就是用来确认连接过程中发生的一系列操作

    • CONNECT:要求用隧道协议连接代理
  • 使用方法下达命令
  • 持久连接节省通信量

HTTP协议初始版本中,每进行一次HTTP通信就断开一次TCP连接

HTTP/1.1和一部分HTTP/1.0使用持久连接
管线化
从前发送请求后需等待并收到响应才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求
使用Cookie的状态管理

HTTP本身是无状态的

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端状态

Cookie会根据从服务端发来的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

服务器端会发现客户端发送过来的Cookie后,会对比服务器上的记录,最后得到之前的状态信息。

HTTP报文内的HTTP信息

  • HTTP报文

    • HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。
    • HTTP报文大致可分为报文首部和报文主体两块,最初由空行(CR+LF)来划分,通常,并不一定要有报文主体

报文结构:


  • 报文首部


    空行(CR+LF)


    报文主体

报文首部格式:

请求报文首部
 响应报文首部


  • 请求行


    状态行


    请求首部字段


    响应首部字段


    通用首部字段


    通用首部字段


    实体首部字段


    实体首部字段


    其他


    其他

请求行:包含请求的方法,请求URI,HTTP版本

状态行:包含表明响应结果的状态码,原因短语,HTTP版本

首部字段:包含表示请求和响应的各种条件和属性的各类首部

其它:可能包含HTTP的RFC里未定义的首部(如Cookie等)

HTTP首部详细信息:

  • 首部字段结构

首部字段名:字段值

例:Content-Type:text/html

字段可以有多个值:Keep-Alive:timeout=15,max=100

  • 重要字段

    • Host,唯一一个必须要有的请求字段,如果主机IP相同,需要host字段加以区分
    • User-Agent,传递浏览器的种类
  • 为Cookie服务的首部字段:
    • Set-Cookie(响应报文)

      字段属性:


NAME=VALUE


赋予Cookie的名称和其值(必须项)


expires=DATA


Cookie的有效期,默认值以浏览器关闭为止


path=PATH


将服务器上的文档目录作为Cookie的适用对象(若不指定则默认为文档所在的文件目录)


domain=域名


作为Cookie适用对象的域名(若不指定则默认为创建Cookie的服务器的域名)


Secure


仅在HTTPS安全通信时才会发送Cookie


HttpOnly


加以限制,使用Cookie不能被JavaScript脚本访问

  • 其它首部字段:

    • X-Frame-Options

      用于控制网站内容在其他Web网站的Frame标签内的显示问题主要防止点击劫持

      DENY:拒绝

      SAMEORIGN:仅在同源页面上(表示该域名上的所有页面fram都可以加载该页面)

    • X-XSS-Protection

      用于控制浏览器XSS防护机制的开关

    • DNT

      Do
      Not Track

      0:同意被追踪

      1:拒绝被追踪

finally:

http://freerainbowtables.com

时间: 2024-08-02 03:55:12

关于HTTP更详细的说明的相关文章

更精简的代码,更详细的注释,让项目更容易维护

更精简的代码,更详细的注释,让项目更容易维护,因为项目的本质不是代码,是算法,是实现步骤, 如果代码不精简,很臃肿,时间久了,具体实现过程会记忆模糊的,代码臃肿,以后是要花费更多时间读的. 有时可以在写的时候,就一边小重构一下,不要等到以后再重构 一精简重构的一些方式: 1抽取方法:抽取常用的功能,可以放到一些综合工具类里 2抽取变量:尤其是对于要用到很多if-else结构里的变量,可以先定义一个空变量,然后根据不同的情况, 进行赋值. 3砍掉变量:一个复杂系统肯定有很多的对象和变量,其实仔细思

httpd重定向跳转和更详细的日志记录

httpd的页面登录认证在httpd的虚拟主机配置文件中添加用户认证的密码的相关配置 <VirtualHost *:80> ? DocumentRoot "/usr/local/httpd/docs/123.com" ? ServerName 123.com ? ServerAlias www.123.com ? <directory /usr/local/httpd/docs/123.com> ? AllowOverride AuthConfig ? Auth

Microsoft OneScript 团队发布的最新一版在 SQL Server Management Studio 中运行的脚本,可以帮助我们获取更详细的版本信息。

该脚本有以下几点: 1. SQL Server 的主要版本.服务级别和版本类别 2. 已安装SP包.累计更新CU,历史更新的QFE\ GDR 3. 推荐当前SP包可以安装最新的CU,并给到相关资源地地址(这个很有帮助) 如Cumulative Update CU6 of SQL Server 2012 SP3. 4. 推荐可升级到其他产品,如: SQL Server 2014 Enterprise SQL Server 2014 Business Intelligence SQL Server

使用Eclipse-Maven-git做Java开发(4)--关于eclipse的更详细介绍

虽然上一篇博客已经介绍了eclipse的安装和一些配置,在文末也已经说了这一篇要开始讲解说明如何在eclipse中建立项目.开始编写代码了,但是后来我发现:有一些细节并没有提到,而且对于eclipse窗口布局.透视图.视图.关联其他软件(maven.tomcat等)等等并没有提及或者说得模糊不清,初学者肯定各种迷惑,但是我的这个系列的博客不就是面向初学者.让他们能够在开始的时候有一个参考都嘛!!所以,我决定,这一篇先不要讲如何在eclipse中建立工程.编写代码,而是先讲解一下eclipse的透

ORACLE网络配置大全没有比这个更详细的【weber出品】

一.起篇 现在怎么说也是互联网时代,数据库也要联网,很多朋友学习Oracle的时候无外乎搭建的是以下两种学习环境: 1.直接在windows环境下安装Oracle后直接sqlplus连接. 2.在windows中安装虚拟机中VMware,安装Linux操作系统+Oracle. 3.或者其他服务器上搭建. 第一种还好,基本上不需要网络配置,学习起来也简单.但是如果你想要在其他电脑上访问你自己电脑的数据库的时候麻烦就来了.或第二种你在windows中连接VMware虚拟机中的数据库.你安装好了客户端

基于iDRAC开发全新接口,用于获取服务器更详细的信息(适用于dell服务器,其他服务器未测试)

github地址 https://github.com/zhangliu520/pyidrac pyidrac 由于ipmi 获取服务器硬件信息不够全面,于是自己基于iDRAC开发全新接口.idrac服务器详细信息获取获取数据包括(电池,mac地址,内核详情,cpu详情,内存详情,磁盘详情,系统名,操作系统类型等等)其它数据待开发. 使用范围 适用于dell服务器,其他服务器资产信息待测定.我会不断的更新bug. python版本 python2,python3 使用说明 安装 pip inst

CentOS6的python2.6升级到python2.7以上版本(可能更详细)

前言:一些第三方框架为了降低复杂性,新的版本已经开始不支持旧版本的python,比如Django这个web框架1.8版本及以上仅仅只支持python2.7及以上版本(记忆中是这个1.8版本) pip安装也会弹出响应警告.安装过程中遇到各种各样的问题,在众里寻他千百度情况下,通过一大堆错误的搜索,终于把python版本给升级了. 但这个版本升级不是完全的替换,只是让我们新版本的python可以用pip正常安装我们需要的第三方模块. CentOS7默认的python版本是2.7.5所以,就以这个版本

Capistrano自动化部署工具安装详细过程

Capistrano是一种通过ssh向多个服务器部署web应用的一种框架和工具.具体更详细的介绍,大家可以登录官方网站或其它相关网站进行了解. 一.软件版本 1. 操作系统:CentOS6.8最小化安装 2. Ruby:2.4.0 3. gem:2.6.10 4. capistrano:3.7.2 二.安装ruby 1. 下载 wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz (请先安装wget: yum instal

超级详细的iptable教程文档

Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置. netfilter/iptables过滤防火墙系统是一种功能强大的工具,可用于添加.编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则.这些规则存储在专用的信 息包过滤表中,而这