浅谈HTTP协议

简介: 浅谈HTTP协议1 HTTP概念把握三个点:1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口802 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事务处理没有记忆能力)3 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

浅谈HTTP协议

1 HTTP概念

把握三个点:
1 HTTP协议(超文本传输协议)   HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80
2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事务处理没有记忆能力)
3 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

2 HTTP协议结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database

  客户端 client:request
  请求行  request line    请求方法  url  协议版本  
  请求头  header  头部字段名 : 值

  请求主体
    例如
    GET /hello.txt HTTP/1.1
    User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    Host: www.example.com
    Accept-Language: en, mi

  服务端 server:response
  状态行   HTTP/1.1  200  OK   协议   状态码  注释
  消息报头  Date  Content-Type  content-Lnegth

  响应正文 content
    例如:
    HTTP/1.1 200 OK
    Date: Mon, 27 Jul 2009 12:28:53 GMT
    Server: Apache
    Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
    ETag: "34aa387-d-1568eb00"
    Accept-Ranges: bytes    
    Content-Length: 51
    Vary: Accept-Encoding
    Content-Type: text/plain    

3 HTTP协议请求方式

PUT   创建资源
      从客户端向服务器传送的数据取代指定的文档的内容。
POST  更新资源
      post请求有消息体,可以携带大量数据,数据放在消息体中
GET   获取资源
      get请求无消息体,只能携带少量数据,数据放在url中
HEAD   获取报头资源
OPTIONS  允许客户端查看服务器的性能。
DELETE   删除指定页面资源
TRACE    回显服务器收到的请求,主要用于测试或诊断
CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

4 HTTP响应头信息

Allow   服务器支持的方法
content-encoding   文档编码方法
content-length   内容长度
content-type   文档所属类型
date   当前的时间
location   客户端去哪提取文档
reflesh    浏览器应在多少时间刷新文档
server     服务器名字
set-cookie  设置页面关联的cookie
last-modified  文档最后的改动时间
Host  域名
Date  时间
User-Agent  浏览器版本

5 HTTP状态码

5 种类型
    1** 信息,服务器收到请求,需要请求者继续执行操作
    2** 成功,操作被成功接收并处理
    3** 重定向,需要进一步寻找资源
    4** 客户端错误,请求包含语法错误或无法完成请求
    5** 服务器错误,服务器在处理请求的过程中发生了错误
常见的http状态码
    200- 请求成功
    301-资源被永久转移到其他URL
    404 请求资源页面不在
    500 内部服务器错误

6 HTTP对象HttpRequest

HttpRequest代表来自客户端的Http请求

原理:request与response是页面发生请求时,Django内置模块把data数据包装成HttpRequest对象,然后Django加载合适的view方法,将HttpRequest对象作为第一个参数传给view方法,则其返回的结果就是HttpResponse对象.

HttpRequest属性列表:

path      请求页面的全路径,不包括域名—例如, "/django/student/"
method    请求类型,大写表示, GET,POST 等
GET       包含所有HTTP GET参数的Queryset对象,获取通过找到key获取value
POST      包含所有HTTP POST参数的Queryset对象,获取通过找到key获取value
COOKIES   包含所有cookies的Python字典对象,键值对Keys和values都是字符串
META      包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等)
FILES     包含所有上传文件的Queryset对象,对应 <input type="file" name="" />标签中name属性的值   
          注意:只有在请求方法是POST,并且在<form>有enctype="multipart/form-data"属性时FILES才拥有              数据。否则,FILES 为空    

user      是一个django.contrib.auth.models.User 对象,代表当前登录的用户,需要引入使用
          from django.contrib.auth import User  实例化 user = User()

session   唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
         当服务器session存储数据时,可以在request中调用 request.session['key']

7 HTTP对象HttpResponse

HttpResponse代表来自服务端的Http响应
HttpResquest是由Django自动创建,但是HttpResponse则必须由我们自己创建,每个view方法必须返回一个HttpResponse对象   from django.http.response import HttpResponse

HttpResponse常见的方法

HttpResponse.has_header(header)   判断响应头是否有给定的名称,返回True or False,不区分大小写
HttpResponse.set_cookie()     通知客户端设置cookie信息,一般存储sessionid+value用于session取值
HttpResponse.delete_cookie    清除cookie信息
HttpResponse.write(content)    写入content至报文中
HttpResponse.flush()    将缓存区的内容写入报文
HttpResponse.tell()     移动文件中的操作指针

HttpResponse 子类
class HttpResponseRedirect      资源重定向
class HttpResponseNotFound      资源未找到 404
class HttpResponseBadRequest    错误请求  400
class HttpResponseForbidden     无权限访问 403
class HttpResponseServerError   服务器错误 500
相关文章
|
1月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
4月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
619 68
|
3月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
514 2
|
3月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
147 0
|
3月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
179 0
|
3月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
285 0
|
4月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
536 1
|
3月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
442 0
|
5月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
203 17

热门文章

最新文章