网站设计深圳要联系方式吗?,惠安网站建设价格,网站建设公司赚钱,郑州做网站助企目录 一、认识URLurlencode和urldecode 二、HTTP协议HTTP协议格式HTTP的方法HTTP的状态码HTTP常见Header 一、认识URL URL叫做统一资源定位符#xff0c;也就是我们平时俗称的网址#xff0c;是因特网的万维网服务程序上用于指定信息位置的表示方法。 urlencode和urldecode
… 目录 一、认识URLurlencode和urldecode 二、HTTP协议HTTP协议格式HTTP的方法HTTP的状态码HTTP常见Header 一、认识URL URL叫做统一资源定位符也就是我们平时俗称的网址是因特网的万维网服务程序上用于指定信息位置的表示方法。 urlencode和urldecode
urlencode编码主要解决在url中出现的特殊符号的问题 urldecode就是urlencode的逆过程 比如图中的“”就被转义成了“%2B”而urldecode就是把“%2B”解释成“” 转义的规则如下将需要转码的字符转为16进制然后从右到左取4位(不足4位直接处理)每2位做一位前面加上%编码成%XY格式
二、HTTP协议
HTTP协议格式
HTTP请求
首行: [方法] [url] [版本]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;
HTTP响应
首行: [版本号] [状态码] [状态码解释]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.
HTTP的方法 其中最常用的就是GET方法和POST方法
HTTP的状态码 为什么有状态码? 我们对应的请求我们给浏览器返回结果但是我们怎么知道返回的是正确的所以有http状态码。 当你访问某个服务器上的某个资源时这个资源不存在属于客户端错误还是服务器错误 请求也分正常请求和不正常请求比如你的银行卡只有1元而你要取一个亿所以服务器上的资源是有限的所以404报错是客户端的错误。 要不要告诉客户端是错误的要所以会返回404的页面
5开头一般是服务器错误比如我们今天在做请求服务器里面可能会创建进程或线程处理失败这就是服务器内部错误或者一些原因服务器响应失败但是即使公司内部是服务器错了也不会给你发是5开头的错误码一般会发1或2开头
3开头的状态码重定向状态码 概念有个客户端和服务器因为某些原因服务器地址换了 对应网站变了可是老用户不知道所以老用户访问的时候请求之后服务器不对这个客户端提供服务只是告诉你当前需要访问其他地址。
我们举个例子来理解什么是重定向状态码 有个学校东门在东门有家吃饭的地方但是学校东门路况不好过了二三月走到吃饭的地方发现门上有贴张字条这条路在修我们临时搬到西门所以重定向功能是通过服务的一方告诉你我们店门没办法提供服务了由你决定去不去。而过了半年后是去西门还是东门但是我不知道路修好没所以我还是去东门看看看了后然后再跑到西门因为我不知道什么时候搬过来这就是临时重定向我的认知始终是先去老的店门后来老板在西门干久了生意好想在西门开就回老店贴三个月之内我们永久搬到西门所以此时我们去东门看到这张纸以后就都会去西门了。
临时重定向不更改浏览器的如何地址信息永久重定向会更改浏览器的本地书签
server 会响应301 302 307 Location 新的地址 301永久重定向 302 307临时重定向
重定向什么时候用 1、一个网站不仅仅是人在访问由可能有其他的程序也在访问比如爬虫搜索引擎每时每刻都在爬全网的数据 2、搜出来一个条目点击这个网站过期了打不开了 一般用在搜索引擎爬全网的资源会用重定向爬的网站会经常更新所以有临时重定向
HTTP常见Header
Content-Type: 数据类型(text/html等)Cache-Control缓存时间默认为0就是没有缓冲Content-Length: Body的长度Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;User-Agent: 声明用户的操作系统和浏览器版本信息;referer: 当前页面是从哪个页面跳转过来的;location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能Accept-Enconing我是客户端可以接受什么样的编码或压缩类型Accept-Language我是客户端我未来可以接受什么样的编码符号User-Agent代表这次HTTP请求的客户端信息
关于http的会话保持功能 http本身是无状态的在我们不考虑缓存的问题http今天访问file1之后还想访问http并不知道你访问过还会重新请求就比如登录哔哩哔哩基于http已经登录了一个网站关闭后再访问还是登录的http不是无状态的吗为什么还是认识我 无状态主要是用于超文本传输的,本身并不会去维护你这个用户是否在线做过多工作它本身不做并不代表它不提供这个功能所以http不直接做这个工作但是用户需要这个功能保证登录后会一直都在这就是会话功能要使用户是否在线要持续的记录下来所以有会话保持功能会写入一些cookie信息就有cookie加session功能就是会话保持功能。 比如服务器上有非常多的资源如果今天我要访问一个资源要VIP才能访问所以我买了个VIP然后我去访问它了服务器识别到我是VIP就发给我资源而只有发和收就是http的功能下次我还想访问其他资源呢http说你是谁啊就还要再登录所以第一次访问VIP资源服务器发现没登录就会返回去要求登录登录成功了就会把我的账号密码提回去服务器端就对我的账号密码做认证做认证之前肯定我注册过就会去查我的账号注册过认证成功后就会返回客户端一个认证通过的消息可能返回一个301Location: https//xxx下次再访问时它怎么知道我是谁所以浏览器当我认证通过时会通过一下http选项(set-cooke)把我的私人信息写到https的响应里发给client。 1、将response中响应的cookie信息在本地进行保存内存级文件级 所以以后访问请求都会携带一个cookie信息不用用户手动操作这是浏览器自动做的服务器会自动进行认证client访问每一个资源的时候都需要认证的
假如黑客盗取cookie信息就以你的cookie登录 一旦我的cookie泄漏了就被别人利用了怎么解决呢 所以服务器上有很多资源client也来了访问服务器资源服务器叫先登录会给client一个form表单那我就以post的方式登录了 以前是因为把我的信息保持在cookie里这次我就先在服务器形成一个session对象用当前用户的基本信息填充就有了一个内存级或者文件级的通过办法形成一个session id然后把id写回给client证明登录成功了所以session id是唯一的client收到了session id我本地也有cookie文件只保存session id是有保存时间限制的一天或几天之后在访问资源都有携带一个http request cookiesession id就给服务器推上来每次推上来就只需要确认是否在很多session id池当中存在就不用再登录了然后黑客来了给你client中放木马拿到你的cookie我也可以访问了我在去访问时也有session id也可以访问也会存在但是我们的信息已经被server服务器维护了而server服务器一般都是些公司。 所以cookie加session的策略存在的目的
其一用户信息不在泄漏其二我们要正确认识cookie加session的策略不是为了防范客户用户被盗取的也不是冒认客户去访问某某网站的而是对异常用户进行识别然后进行处理。
由于普通的小白很难去保护自己的数据被盗用所以我们很难去管理所有人的电脑但是在公司层面能保证把自己的东西管理好服务器方虽然我无法确认你冒认我但我识别出来你冒认了我立马就可以解决这个客户 所以1、要识别出来2、解决。但是我们很难取解决不可能去把你的用户密码改了即使识别出来了也很难去解决最多是冻结比如这个账号在新疆立马跑到北京所以这个账号是有问题的这个账号发生异地登录就强制你下线重新登录黑客只有你的cookie信息而没有你的账号密码然后识别比如这个QQ好友一天之内都在线了在数据层面如何解决就直接将session id失效就无法登录就不像上面怎么失效只有改别人密码所以这种方案不能杜绝client的cookie丢失的问题但是可以提出来一下解决方案对异常client识别出来并进行解决。