首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端工程师,揭开HTTP的神秘面纱

HTTP 发展历史 HTTP/0.9 只有一个命令GET 响应类型: 仅 超文本 没有header等描述数据的信息 服务器发送完毕,就关闭TCP连接 HTTP/1.0 增加了很多命令(post...最终,当发送了所有数据之后,服务器发送一个消息,表示不会再有更多数据向客户端发送了;则客户端才会关闭连接(断开 TCP) 支持的方法: GET , HEAD , POST , PUT ,DELETE...A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;(第一次握手,由浏览器发起,告诉服务器我要发送请求了) 第二次握手:主机B...) 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=...15.png 默认允许的请求方法: GET HEAD POST 其他的方法(PUT、DELETE)都需要预请求验证的。

47760

对不起,看完这篇HTTP,真的可以吊打面试官

如果指定了 Cache-control:max-age=N ,那么缓存会保存 N 秒。如果这个通用标头不存在的话,则会检查是否存在 Expires 标头。...或许你会认为这两个 URL 是不一样的,放心,关于一样不一样的论据我给你抛出来了 协议和域名部分是不区分大小写的,但是路径部分则根据服务器平台而定。...另外,对于可能导致服务器数据产生副作用的 HTTP 请求方法(尤其是 GET 或者具有某些 MIME 类型 POST 方法以外 HTTP 方法),该规范要求浏览器预检请求,使用 HTTP OPTIONS...下面是两种常见的案例 对于 GET 和 POST 方法,会结合使用 Range 标头,它可以确保新发送请求的范围与上一个请求的资源相同,如果不匹配的话,会返回 416 响应。...当 GET 和 POST 发送的 If-None-Match与 Etag 匹配时,服务器会返回 304。

6.4K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简述 HTTP 请求与跨域资源共享 CORS

    ❞ 「使用 HTTP 和 HTTPS 协议,我们还有其他方法可以将数据发送到服务器。」 请求与响应 当用户在浏览器中输入域名时,浏览器会找到该服务器(这只是其他人的计算机)并向该服务器发送请求。...就像其它浏览器请求一样,表头中的一些数据会提供一些信息。...例如,通过 OPTIONS 方法发送的 Access-Control-Request-Method 表头会提供一些信息:真实请求何时到来,数据类型是什么,请求方法是什么等。...在这种情况下,服务器可以响应是否接受请求,至于其余部分则取决于服务器。作为响应,服务器可以发回 Access-Control-Allow-Origin 表头,表明资源可以被任何域访问。...虽然它允许来自其他域的 GET 请求,但它可能限制 POST 请求。 跨域请求响应头 「Access-Control-Allow-Origin」 — 包含允许发送跨域请求的主机名。

    1.2K10

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    如果指定了 Cache-control:max-age=N ,那么缓存会保存 N 秒。如果这个通用标头不存在的话,则会检查是否存在 Expires 标头。...或许你会认为这两个 URL 是不一样的,放心,关于一样不一样的论据我给你抛出来了 协议和域名部分是不区分大小写的,但是路径部分则根据服务器平台而定。...另外,对于可能导致服务器数据产生副作用的 HTTP 请求方法(尤其是 GET 或者具有某些 MIME 类型 POST 方法以外 HTTP 方法),该规范要求浏览器预检请求,使用 HTTP OPTIONS...下面是两种常见的案例 对于 GET 和 POST 方法,会结合使用 Range 标头,它可以确保新发送请求的范围与上一个请求的资源相同,如果不匹配的话,会返回 416 响应。...当 GET 和 POST 发送的 If-None-Match与 Etag 匹配时,服务器会返回 304。

    5.4K20

    前端应该知道的 HTTP 知识

    【POST 用于向服务器发送数据,PUT 方法用于向服务器上的资源(例如文件)中存储数据】 TRACE:主要用于诊断。...POST 支持更多的编码类型,而且不对数据类型做限制 从 TCP 的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100...Cookies HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上...预检请求的响应中,包括了以下几个字段 Access-Control-Allow-Origin: http://foo.example // 表明服务器允许客户端使用 POST, GET 和 OPTIONS...方法发起请求 Access-Control-Allow-Methods: POST, GET, OPTIONS // 表明服务器允许请求中携带字段 X-PINGOTHER 与 Content-Type

    57310

    前端必备的 HTTP 知识!看这篇就够了!!

    POST 支持更多的编码类型,而且不对数据类型做限制 从 TCP 的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100...Cookies HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上...在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据) 预检请求中同时携带了下面两个首部字段: Access-Control-Request-Method...预检请求的响应中,包括了以下几个字段 Access-Control-Allow-Origin: http://foo.example // 表明服务器允许客户端使用 POST, GET 和 OPTIONS...方法发起请求 Access-Control-Allow-Methods: POST, GET, OPTIONS // 表明服务器允许请求中携带字段 X-PINGOTHER 与 Content-Type

    51150

    Gin+Vue开发一个线上外卖应用(用户数据创建,插入,跨域处理)

    功能和背景介绍 在项目的登录功能中,如果在登录时发现用户名和密码在用户表中不存在,会自动将用户名和密码保存在用户表中,创建一个新的用户。...如果首次使用手机号和验证码进行登录,会默认将手机号作为用户名创建新的用户,将用户结构体对象的数据保存在数据库中。 因此,我们有必要创建用户表。...如果通过了手机号和验证码的验证,通过手机号查询用户是否已经存在。如果用户记录不存在,则创建新的用户记录并保存到数据库中,如果用户记录已经存在,则表示登录成功,返回用户信息。...跨域访问权限检查通过,会正式发送POST请求。 服务端设置跨域访问 可以在gin服务端,编写程序进行全局设置。...", "*") // 设置允许访问所有域 context.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE

    47470

    完整的url以及同源跨域处理

    它的基本思想是,网页通过添加一个元素,向服务器请求JSON数据, 这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。...只要同时满足以下两大条件,就属于简单请求 (1)请求方法是以下三种方法之一: HEAD GET POST (2)HTTP的头信息不超出以下几种字段: Accept...服务器根据这个值,决定是否同意这次请求。 如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。...如果Origin指定的域名在许可范围内,服务器返回的响应,会多出几个头信息字段。...: http://api.bob.com Access-Control-Allow-Methods: GET, POST, PUT Access-Control-Allow-Headers

    83820

    什么是 CORS(跨源资源共享)?

    但是,有时我们会希望允许访问外部资产,例如视频、直播或图片。 什么是起源? Origin指的是3部分:协议,主机,端口号。Protocol指的是应用层协议,通常是HTTP。...许多站点使用一种称为跨源资源共享(CORS)的跨源策略形式,它定义了网页和主机服务器交互的方式,并确定服务器允许访问该网页是否安全。...如果不是,服务器将返回一条拒绝消息,说明是否不允许源进行所有访问或是否不允许进行特定操作。 CORS 请求的类型 上面的请求GET是最简单的只允许查看的请求形式。...HEAD /index.html POST: 该POST请求要求将数据传输到请求的服务器,这可能会导致服务器发生变化。如果一个POST请求被多次触发,它可能会有意想不到的行为。...预检请求包括请求者的来源和所需的方法,使用 表示Access-Control-Request-Method。 服务器分析预检请求以检查此来源是否有权执行此类方法。

    46930

    《图解HTTP》梳理(二)

    ,几乎所有的浏览器都会把 POST 改为 GET,并删除请求报文内的主体,之后请求会自动再次发送。...302 标准禁止将 POST 变换成 GET,但是使用时大家并不遵守。而 307 会遵守浏览器标准,不会将 POST 变为 GET。...400 Bad Request:报文中存在语法错误,浏览器无法理解,但会像对待 200 OK 一样对待该状态码。...组织内部针对特定网站的访问控制 以获取日志为主要目的 代理有多种使用方法,按两种基准分类:一种时是否使用缓存,另一种是是否会修改报文 缓存代理:代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本...(缓存)保存在代理服务器上 透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy),反之为非透明代理 网关:转发其他服务器通信数据的服务器。

    59240

    「 面试三板斧 」之 HTTP (上)

    语义:用请求的主体部分来创建一个由所请求的 URL 命名的新文档 POST:用来向服务器中输入数据的。通常我们提交表单数据给服务器。...【POST 用于向服务器发送数据,PUT 方法用于向服务器上的资源(例如文件)中存储数据】 TRACE:主要用于诊断。...优化OPTIONS请求:Access-Control-Max-Age 或者 避免触发 可见一旦达到触发条件,跨域请求便会一直发送2次请求,这样增加的请求数是否可优化呢?...技术上有以下的区分: 缓存:Get 请求能缓存,Post 请求不能 安全:Get 请求没有 Post 请求那么安全,因为请求都在 URL 中。且会被浏览器保存历史纪录。...从 TCP 的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。

    41110

    简述php的垃圾收集机制

    4.POST和GET有什么区别 1 、GET把参数包含在URL中,POST通过request body传递参数。 2、GET在浏览器回退时是无害的,而POST会再次提交请求。...GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 6、在万维网世界中,还有另一个重要的角色:运输公司。...但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。...如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦...7、GET产生一个TCP数据包;POST产生两个TCP数据包。

    53120

    【计网】从HTTP0.9 到 HTTP3

    请求方法拓展到了 GET,HEAD,POST 在新 HTTP 头(Content-Type)的帮助下,可以传输不止 HTML 的任意格式的数据。...没有请求体 没有响应体,响应头应该与使用 GET 请求时的一样 幂等 可缓存 安全 POST 将数据发送给服务器 数据放在请求体中 有响应体 不幂等 可缓存(包含新鲜信息时) 不安全 PUT 使用请求中的负载创建或替换目标资源...,复杂的网络环境和代理服务器也可能会导致流水线不能像预期的那样高效工作,因此,现代浏览器都没有默认启用流水线,在 HTTP/2 里,有更高效的算法代替了流水线。...: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age:...对比缓存:使用数据前需要请求服务器验证缓存是否失效。

    68430

    Web页面解析过程(浅)

    DNS:域名系统 DNS服务器:记录着域名及其对应的IP地址 解析域名: ​ 浏览器中输入目标网站的域名,浏览器会生成一个域名IP的请求 ​ 请求第一时间会查询本地主机的DNS缓存表ipconfig/displaydns...域名记录 域名和IP地址有某种对应的关系 A记录:返回域名对应的IP地址 NS域名服务器记录:保存下一级域名信息的服务器地址 MX邮件记录:接收电子邮件的服务器地址 CNAME规范记录:返回另一个域名(...是否解析成功 ​ 因为域名解析需要同步到DNS根服务器,而DNS根服务器会不定时刷,只有DNS根服务器刷新后域名才能正常访问,新增解析一般会在10分钟左右生效,最长不会超过24小时,修改解析时间会稍微延长...,检查用户的IP地址合法性 post-access访问权限检查提交阶段,如果请求不被允许访问Nginx服务器,该阶段用于返回错误的响应 try-files配置项try-files处理阶段,如果http访问的静态文件...我们登录login.php,利用POST方法将请求主体上传提交 HEAD方法: 用于只要求服务器响应返回HTTP信息(返回除消息主体外的信息);常用来测试链接的有效性,测试页面是否可以正常访问常用这个请求方法访问

    2.1K20

    ajax跨域问题以及解决方案_js跨域请求的三种方法

    ,检查是否符合要求,如果为空,则给提示,如果不为空,则异步查询数据库,后返回结果; 本次请求的页面是8082端口的,而响应的ajax路径却是8080端口的 前端代码—> GET POST url:"http://localhost:8080/loadPicture_war_exploded/checkName.do?"...因为实际应用中分布式与集群会涉及到跨域,前端服务器与后端服务器分离,前端服务异步请求后端服务器就涉及到了跨域; 由于浏览器的同源策略,所以跨服务器访问会有一些小麻烦,先一步一步探索去解决; 这个时候...,前端方法名随时可能变化,为了降低耦合度,一般会这么做,前端发送的数据中携带该方法名; 前面不是说success废了吗?...”, ““); /*请求方式白名单 */ resp.setHeader(“Access-Control-Allow-Methods”, “POST, GET, OPTIONS, DELETE”);

    3.5K20

    从输入URL到渲染的完整过程1

    200 OKDate: Tue, 21 Apr 2020 08:03:35 GMT...Access-Control-Allow-Origin: http://my.com...消息体中的数据当浏览器看到服务器允许自己访问后...,高兴的像一个两百斤的孩子,于是,它就把响应顺利的交给 js,以完成后续的操作下图简述了整个交互过程图片需要预检的请求简单的请求对服务器的威胁不大,所以允许使用上述的简单交互即可完成。...这是一个预检请求,它的目的是询问服务器,是否允许后续的真实请求。...:和简单请求一样,表示允许的源Access-Control-Allow-Methods:表示允许的后续真实的请求方法Access-Control-Allow-Headers:表示允许改动的请求头Access-Control-Max-Age...:告诉浏览器,多少秒内,对于同样的请求源、方法、头,都不需要再发送预检请求了浏览器发送真实请求预检被服务器允许后,浏览器就会发送真实请求了,上面的代码会发生下面的请求数据POST /api/user HTTP

    66840

    你是怎样解决跨域问题的?-面试必问

    200 OKDate: Tue, 21 Apr 2020 08:03:35 GMT...Access-Control-Allow-Origin: http://my.com...消息体中的数据当浏览器看到服务器允许自己访问后...,高兴的像一个两百斤的孩子,于是,它就把响应顺利的交给 js,以完成后续的操作下图简述了整个交互过程图片需要预检的请求简单的请求对服务器的威胁不大,所以允许使用上述的简单交互即可完成。...这是一个预检请求,它的目的是询问服务器,是否允许后续的真实请求。...:和简单请求一样,表示允许的源Access-Control-Allow-Methods:表示允许的后续真实的请求方法Access-Control-Allow-Headers:表示允许改动的请求头Access-Control-Max-Age...:告诉浏览器,多少秒内,对于同样的请求源、方法、头,都不需要再发送预检请求了浏览器发送真实请求预检被服务器允许后,浏览器就会发送真实请求了,上面的代码会发生下面的请求数据POST /api/user HTTP

    61620

    基于 Nginx + PHP-FPM 作为 HTTP 服务器

    0、引言 PHP 对 HTTP 请求响应支持非常友好,可以通过 PHP 预定义的超全局变量获取 HTTP 请求数据: $_SERVER:获取 HTTP 服务器数据 $_GET:获取 URL 查询字符串中的参数...(GET 请求参数) $_POST:获取 POST 请求数据(通常是表单请求) $_FILES:获取通过 HTTP 上传的文件 $_COOKIE:获取 Cookie 中的数据 $_REQUEST:获取用户请求数据...(包含 GET 和 POST 请求以及 Cookie 数据) 所有请求数据都是以关联数组的方式存储在对应的超全局变量中,比如要获取 GET 请求中的 name 参数,可以通过 $_GET['name']...注:Nginx + PHP-FPM 组合中,Nginx 是一个反向代理服务器,对于前端静态资源请求直接通过 Nginx 处理,对于后端 PHP 动态请求,会转发给 PHP-FPM 进程处理。...4、小结 通过 $_SERVER 超全局变量可以获取到所有的 HTTP 请求信息和服务器信息,不过我们在 Web 应用中通常只对 HTTP 请求头和请求数据感兴趣,这些可以通过 $_GET、$_POST

    1.1K10
    领券