当前位置: 首页 > news >正文

前端之本http协议

我们新建一个python文件编写以上内容,然后同目录下编写一个index.html,内容如下

 

我们运行python 文件,文件 就会把index.html 发送给127.0.0.1:8080,然我们浏览器打开,就会发现

浏览器的地址下的页面出现了hello,world.

本质上,浏览器和服务器就是服务器和客户端的模式

cs模式    client------server

基于TCP协议  (UDP协议)

socket与TCP协议的关系-----socket是对TCP协议,UDP协议的封装


web服务

标准的cs模式--------bs模式



GET /favicon.ico HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: */*
Referer: http://127.0.0.1:8080/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
Cookie: sessionid=e0ci3j4mwkg8itrtr5so824raj8wilfk; 

 

Http协议:

一 请求协议  (浏览器------>server)

    url: www.baidu.com?a=11)请求首行  GET /favicon.ico HTTP/1.12)请求头信息 
   
        Host: 127.0.0.1:8080
        Connection: keep-alive
        User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
        Accept: text/html
        Accept-Encoding: gzip, deflate, sdch, br
        Accept-Language: zh-CN,zh;q=0.8
        
        Referer: http://127.0.0.1:8080/
    
        Cookie: sessionid=e0ci3j4mwkg8itrtr5so824raj8wilfk; csrftoken=0nNXMorXRmbll9pDD1mEWAlUmqPLPDOMvY5zQvRawcbXyuiuSaYtTGkzQUB5XfPF
    (3) 空行
   (4)请求体(请求数据)----------------get请求体不存在
        
二 响应协议(server-----------》浏览器)

        响应首行;   HTTP/1.1 200 OK  
        响应头信息;
        空行;
        响应体。
cs 模式  服务端客户端关系

基于TCP协议(udp)

socket与tcp协议的关系
socket是对tcp/udp的封装


bs模式
浏览器本身就是客户端



http:属于应用层,基于ip+tcp/udp
请求协议:浏览器发往服务器
关键字竞价排名,点击进入网站,根据用户点击地址完成一次完整的排名计价。
盗链与反盗链:资源在别的地方,但是点击量集中在自己网站,做自己的广告。就可以查看Referer,如果不对,转到其他页面
            或者转入自己的网站,必须在我自己网站上使用资源,才能下载。

请求首行;  // 请求方式,请求路径,协议和版本,例如:GET /index.html HTTP/1.1
请求头信息;// 请求头名称:请求头内容,即为字典key:value格式,例如:Host:localhost

            Host:127.0.0.1:8000
            Connection:keep-alive  保持连接状态
            User-Agent:Mozilla/5.0  用户代理一般为浏览器
            Accept:text/html        支持类型
            Accept-Encoding:gzip,br 支持编码
            Accept-Language:zh-CN,zh可接受语言
            Rerferer:http://127.0.0.1:8080  进入的入口地址
            Cookie:浏览器字典格式,存储密码等,保存状态


空行;     // 用来与请求体分隔开
请求体。   // GET没有请求体,只有POST有请求体。


get:url+参数  访问网址是get,提交默认get一般使用post为了安全
post:当地址栏太长参数不够用的时候,用post安全,大小无限制

HTTP默认的请求方法就是GET
     * 没有请求体
     * 数据必须在1K之内!
     * GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
       2. 点击页面上的超链接也一定是GET请求
       3. 提交表单时,表单默认使用GET请求,但可以设置为POST

POST:
(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!

?(1)连接作用:连接页面地址和参数(2)清除缓存:不调用缓存的内容,而认为是一个新地址,重新读取
&







响应协议:服务器发往浏览器


响应首行:HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
响应头信息:
        Server:WSGIServer/0.2 CPython/3.5.2:服务器的版本信息;
        Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8;
        Content-Length: 724:响应体为724字节;
        Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:响应给客户端的Cookie;
        Date: Wed, 25 Sep 2012 04:15:03 GMT:响应的时间,这可能会有8小时的时区差;
        Request URL:http://127.0.0.1:8090/login/
        Request Method:GET
        Status Code:200 OK
        Remote Address:127.0.0.1:8090
        Response Headers
        view source
        Content-Type:text/html; charset=utf-8
        Date:Wed, 26 Oct 2016 06:48:50 GMT
        Server:WSGIServer/0.2 CPython/3.5.2
空行:分隔响应头和响应体
响应体:
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
        <form action="/login/" method="post">
          用户名:<input type="text" name="username"/>
          <input type="submit" value="提交"/>
        </form>
        </body>
        </html>





apache nginx:解析http
状态码:200成功
       302  重定向 需要重发请求

500以上基本都是服务器错误

200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
404:请求的资源没有找到,说明[客户端错误]的请求了不存在的资源;


302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
304: 重定向,Last-Modified 存储服务器端修改的时间,如果是上次修改时间说明没变,就直接才能从缓存中取出来

500:请求资源找到了,但服务器内部出现了错误;



其他响应头:

告诉浏览器不要缓存的响应头:
Expires: -1;
Cache-Control: no-cache;
Pragma: no-cache;


自动刷新响应头,浏览器会在3秒之后请求http://www.baidu.com:
Refresh: 3;url=http://www.baidu.com



HTML中指定响应头

在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,
例如在index.html页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,
表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.baidu.com.

 

转载于:https://www.cnblogs.com/adamans/articles/6873990.html

相关文章:

  • 浙江省委组织部长蔡奇做客腾讯:我是微博控
  • SEO优化方案及SEO流程表
  • SpriteKit 技巧之添加背景图片
  • 实验九 三层交换机配置路由DHCP中继(二)
  • ILMerge合并多个DLL
  • htmlunit爬取js异步加载后的页面
  • ruby gem 0.9.4的问题
  • Innodb与Myisam引擎的区别与应用场景
  • Linux中有两类函数库,分别是静态库和动态库
  • 记忆模糊的知识点5-22
  • 深入说明HDR技术
  • 免费产品体验码已发放完毕,实物礼品已备好?
  • wdcp服务器/虚拟主机管理系统1.1发布
  • VMware ESXi 和 VMware Server 有什么区别
  • mybatis-spring从1.1升级到1.2所带来的dao层级的编写问题
  • [deviceone开发]-do_Webview的基本示例
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2019.2.20 c++ 知识梳理
  • JavaScript-Array类型
  • JavaScript异步流程控制的前世今生
  • java第三方包学习之lombok
  • Less 日常用法
  • miaov-React 最佳入门
  • node入门
  • Object.assign方法不能实现深复制
  • Phpstorm怎样批量删除空行?
  • Python进阶细节
  • Rancher-k8s加速安装文档
  • 安装python包到指定虚拟环境
  • 将回调地狱按在地上摩擦的Promise
  • 今年的LC3大会没了?
  • 配置 PM2 实现代码自动发布
  • 前端面试总结(at, md)
  • 使用权重正则化较少模型过拟合
  • 怎样选择前端框架
  • 《天龙八部3D》Unity技术方案揭秘
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #includecmath
  • #微信小程序(布局、渲染层基础知识)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (剑指Offer)面试题34:丑数
  • (力扣)1314.矩阵区域和
  • (四)c52学习之旅-流水LED灯
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net 7 上传文件踩坑
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net Signalr 使用笔记
  • .NetCore 如何动态路由
  • .NET和.COM和.CN域名区别