HTTP协议

HTTP协议概述

Hyper Text Transfer Protocol 超文本传输协议

HTTP协议两种状态协议
  • 有状态协议

    • 记录用户的访问状态,就比如FTP 文件上传和下载服务器
  • 无状态协议

    • 不记录用户的访问状态,浏览器每次发送请求给服务器,服务器并不能通过HTTP协议来获得用户状态,也就是说并不知道每次请求是否是同一个用户发送过来的。

    • 因此不记录用户的访问状态,访问速度比较快

HTTP协议默认端口号:

HTTP的默认端口号:80,不是8080,8080是Tomcat的默认端口号

浏览器访问默认使用80端口,所以我们可以省略。

淘宝使用的是https://www.taobao.com/,加密的HTTP协议, HTTPS协议默认端口是443

HTTP协议组成
  • HTTP请求

  • HTTP响应

  • 学习请求
  • 响应的数据格式

URL组成

Uniform Resource Locator 统一资源定位符,定位网络上一个资源,可以直接访问。

http://www.baidu.com:8080/date35/index.jsp?boardid=5&id=24618&page=1#aa

组成部分:
- http : 访问协议

  • www.itcast.cn : 域名或IP地址,直接通过IP访问速度更快。域名要转成IP地址访问 ,先通过域名在host找ip地址,找不到就去DNS上找 域名相当于电话的备注名 ip地址相当于电话 dns相当于114查询电话台
  • 8080 : 端口号
  • date35 : 访问项目名字
  • index.jsp : 访问的web资源
  • ? : URL与参数的分隔符
  • boardid=5 : 参数名=参数值
  • & : 参数与参数之间分隔
  • #aa : 锚点,访问网页具体的位置

URI

Uniform Resource Identifer 统一资源标识符

用来表示一个资源的名字,不能直接访问


image

HTTP请求 Request

  • 查看浏览器与服务器的通讯

image

  • Network–>flush–>and look please
HTTP请求的组成
  • 请求行 Request Headers的第一句
  • 请求头 Request Headers
  • 请求体 Form Data
    • method=”GET” GET方法中没有请求体

method=”GET” GET请求

image

  • GET方法中没有方法体( From Date ),是以查询字符串方式( Query String Parameters )传输的

method=”PSOT” POST请求

image

请求行

一个完整的请求行包括:
POST /day35-reg/server HTTP/1.1
请求方式
URI 协议和版本

请求头
  • Referer

    • 浏览器上一个请求的网页地址,即从哪一个页面跳转过来的
  • If-Modified-Since

    • 浏览器在本地缓存当前网页的时间,注:时间上差8小时
  • User-Agent

    • 得到 客户端操作 系统的信息 和 浏览器的类型
  • Connection
    • 当前TCP的连接状态:keep-alive保持连接,close关闭连接。
    • 在HTTP1.0中,每次请求结束就关闭连接
    • 在HTTP1.1中, 请求会保持连接状态 。目前广泛使用HTTP1.1的版本
  • Host
    • 请求的服务器主机名和端口号
  • Content-Length
    • 客户端请求的数据长度,只在POST方法上可以看到
  • Content-Type

    • 请求的内容类型,使用POST方法提交时会有请求类型,GET方法没有这个请求头
    • 如果使用POST方法,则它的值是:
      Content-Type: application/x-www-form-urlencoded表单URL编码格式
      表示表单的数据以键=值对的格式发送给服务器
      可以指定表单提交数据的类型

      <form enctype="application/x-www-form-urlencoded">

      • application/x-www-form-urlencoded 默认的类型 ,键=值
      • multipart/form-data 用于文件上传
      • text/plain 纯文本发送
  • Accept

    • 请求中支持的 MIME类型 ,
    • MIME格式:大类型/小类型;[可选参数]
      • text/css、text/javascript
      • text/html;charset=utf-8
      • image/jpeg

    MIME( Multipurpose Internet Mail Extensions )多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候, 浏览器会自动使用指定应用程序来打开 。如:jpg,txt,mp4

  • Accept-Language

    • 浏览器允许的语言和国家,两个小写字母表示语言,大写的两个字母代表国家或地区
    • 如:zh-CN表示中文-中国,还有: zh-HK zh-TW, en-US,en-GB
  • Accept-Encoding 请求的数据支持的压缩类型,如gzip等

请求体

在GET方法中没有请求体(使用Query String Parameters),POST有请求体(Form Data),数据通过请求体发送


GET和POST的 区别 :
  • 地址栏

    • POST: 不会显示提交的参数,数据是以请求体的方式发送
    • GET: 在地址栏上显示参数,以查询字符串的方式发送参数
  • 大小

    • POST: 理论上没有限制数据大小
    • GET: 最多是1K
  • 安全性

    • POST: 安全性更高
    • GET: 安全性要低
  • 缓存

    • POST: 不会使用浏览器的缓存
    • GET: 使用缓存的,如果之前已经访问过这个HTML页面,以后再访问的时候,如果服务器资源没有发生变化,使用缓存。

HTTP响应概述

image

响应信息的组成:
  • 响应行
  • 响应头 Response
  • 响应体
响应行
HTTP/1.1 200 OK

协议和版本 状态码 状态信息

响应头信息
  • Location : http://www.newboy.com/index.jsp 页面在跳转的时候, 下一个将要跳转到的页面 。以后在重定向可以看到

  • Server:apache tomcat : 服务器名字

  • Content-Encoding: gzip

    服务器支持的压缩格式类型 。有些服务器上的资源文本比较大,可以先在服务器端进行压缩,再传给浏览器。当浏览器接收完所有的数据之后,再由浏览器去解压,减少网络带宽的占用,提高传输效率

  • Content-Length: 80
    • 服务器响应数据的长度
  • Content-Language: zh-CN
    • 服务器内容支持的语言和国家
  • Content-Type: text/html; charset=utf-8

    • 响应内容的 MIME类型
      text/html ;charset=utf-8
      表示服务器响应的内容是文本的HTML类型,字符集是utf-8
  • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
    • 服务器上文件最后修改的时间,相差8个小时
  • Refresh: 1; url=/day35/hello.html
    • 过1秒以后跳转到url指定的另一个页面
  • Content-Disposition: attachment; filename=newboy.zip
    • 浏览器将资源以附件的方式newboy.zip为名字下载到本地硬盘上
  • Connection: close/Keep-Alive
    • 服务器的连接状态:keep-alive连接或close关闭
  • Date: Tue, 11 Jul 2000 18:23:51 GMT
    • 服务器响应的时间,差8个小时
响应体

是服务器发送给浏览器的数据,如:HTML文本或图片二进制


常用状态码的含义:
状态码含义
200服务器得到了正确的响应,并且正常返回了数据
302在浏览器端进行了页面的跳转,作为暂时性转移( Temporarily Moved )
304使用了浏览器的缓存
404指定的资源不存在
500服务器内部出现错误,服务器代码有问题

- 302深度解释:

302重定向从定义来说,从网址A做一个302重定向到网址B时,主机服务器的隐含意思是网址A随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。

实际上如果搜索引擎在遇到302转向时,百分之百的都抓取目标网址B的话,就不用担心网址URL劫持了。

问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。为什么呢?比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不用户友好。这时Google很有可能会仍然显示网址A。

由于搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL劫持的可能性。也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,出于某种原因, Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,这种情况就叫做网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值