热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Http协议知识点整合

常见的Http、Methodhttp1.0定义了三种:GET:向服务器获取资源,比如常见的查询请求POST:向服务器提交数据而发送的请求Head:和get类似,返回的响应中没

常见的Http、Method

http1.0定义了三种:



  • GET: 向服务器获取资源,比如常见的查询请求

  • POST: 向服务器提交数据而发送的请求

  • Head: 和get类似,返回的响应中没有具体的内容,用于获取报头

http1.1定义了六种:



  • PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新

  • PATCH:PUT 方法的补充,更新指定资源的部分数据

  • DELETE:用于删除指定的资源

  • OPTIONS: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等

  • CONNECT: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户,网页开发基本不用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似中介

  • TRACE:回显服务器收到的请求,主要用于测试或诊断


常见http状态码解析

浏览器向服务器请求时,服务端响应的消息头里面有状态码,表示请求结果的状态。


分类

1XX: 收到请求,需要请求者继续执行操作,比较少用;

2XX: 请求成功,常用的 200​;

3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;
好处:网站改版、域名迁移等,多个域名指向同个主站导流
必须记住:



  • 301:永久性跳转,比如域名过期,换个域名

  • 302:临时性跳转

4XX: 客户端出错,请求包含语法错误或者无法完成请求;
必须记住:



  • 400: 请求出错,比如语法协议

  • 403: 没权限访问

  • 404: 找不到这个路径对应的接口或者文件

  • 405:不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET

5XX: 服务端出错,服务器在处理请求的过程中发生了错误
必须记住:



  • 500: 服务器内部报错了,完成不了这次请求

  • 503: 服务器宕机


http协议无状态解决方法 COOKIE和Session



  • COOKIE数据保存在客户端,session数据保存在服务端;

  • COOKIE不是很安全,容易泄露,不能直接明文存储信息;

  • COOKIE大小和数量存储有限制;


http协议之分布式业务无状态解决方案 JWT

JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名。

JWT格式组成 头部、负载、签名:header+payload+signature



  1. 头部:主要是描述签名算法

  2. 负载:主要描述是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss签发者,exp过期时间,sub 面向的用户

  3. 签名:主要是把前面两部分进行加密,防止别人拿到token进行base解密后篡改token

简单来说: 就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息。生成的token,可以存储在COOKIE,localstorage和sessionStorage里面。


JWT方案优点:生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库;存储在客户端,不占用服务端的内存资源,使用加解密的方式进行校验,在分布式业务中能较好的提高性能和节省空间。

JWT方案缺点:token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等;如果没有服务端存储,则不能做登录失效处理,除非服务端改秘钥。

http请求产生到响应的链路

1、浏览器输入url, 解析url地址是否合法 ​   
2、浏览器检查是否有缓存, 如果有直接显示。如果没有跳到第三步 ​
3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址
4、浏览器向服务器发起tcp链接,完成tcp三次握手 ​
5、握手成功后,浏览器向服务器发送http请求 ​
6、服务器收到处理的请求,将数据返回至浏览器 ​   
7、浏览器收到http响应
8、浏览器解析响应。如果响应可以缓存,则存入缓存 ​   
9、浏览器进行页面渲染


浏览器同源策略和跨域

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。同源策略是由Netscape提出的一个著名的安全策略。

当一个浏览器的两个tab页中分别打开百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。同源策略是浏览器的行为,是为了保护本地数据不被Javascript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据,即请求发送了,服务器响应了,但是无法被浏览器接收。

跨域:同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 COOKIE,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同":协议相同 、域名相同 、端口相同 。一句话:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。


推荐阅读
  • 本文详细解析了微信服务端示例类的功能与应用。其中,`ClientResponseHandler` 类主要用于处理微信支付所需的响应数据,而 `TenpayHttpClient` 则是对 HTTP 请求(包括 GET 和 POST 方法)进行了封装,以便在内部调用时更加便捷和高效。这些工具类在实际开发中起到了关键作用,开发者无需深入了解其底层实现细节,即可轻松集成微信支付功能。 ... [详细]
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 深入解析HTTPS:保障Web安全的加密协议
    本文详细探讨了HTTPS协议在保障Web安全中的重要作用。首先分析了HTTP协议的不足之处,包括数据传输过程中的安全性问题和内容加密的缺失。接着介绍了HTTPS如何通过使用公钥和私钥的非对称加密技术以及混合加密机制,确保数据的完整性和机密性。最后强调了HTTPS的安全性和可靠性,为现代网络通信提供了坚实的基础。 ... [详细]
author-avatar
tuir
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有