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

对一个WEB请求的理解

随着写的WEB程序越来越多,项目的部署也越来越繁琐,对于一些线上问题总是搞不清楚是哪个环节出的问题,归根结底是对整个流程的不熟悉导致,所以分析下一个WEB请求从用户输入地址到页面出来到底经历过多少东西..../15/%E5%8A%A8%E6%BC%AB/%E5%8A%A8%E6%BC%AB%E6%8E%A8%E8%8D%90/ 中间还有其他很复杂的流程,比如参数,协议,请求头,请求体等建立....附录 1.CDN网络 CDN又叫内容分布网络,一般用于静态资源如html,css,js的存储,简单的理解为一张大网,网上每一个节点都有着很多资源.那么每一个用户想要访问的时候就会去找离他最近的节点上面获取需要的内容...举个例子:用户访问taobao的某css文件,首先浏览器会发送请求 -> DNS解析域名,这里一般会有一个DNS负载均衡服务器,其得到最适合用户的CDN节点ip -> 用户拿到CDN节点ip得到资源....2.DNS劫持 了解了DNS的解析是一个递归过程,找到域名对应的ip就返回,如果有人手动修改了该条映射信息,那么就会返回到错误的ip地址,这种行为也叫DNS劫持,对于客户端来说,没有很好地方式能认为服务器返回的信息是可靠的

99850

kafka中 DescribeLogDirs请求参数引起的一个问题

再次排除了可能有影响的因素后,发现问题仍旧存在,好像不得不分析下源码了,可简单看了下源码后,客户端就是发送一个请求,而服务端又完全没有任何错误信息。...(必需的参数) --broker-list:用于指定请求的kafka broker的ID列表(非必需的参数) --topic-list: 指定的topic列表(必需的参数) 其中,需要注意的是"--broker-list..."这个参数,如果不带该参数,则以元数据请求中的kafka集群信息为准,否则以指定的"--broker-list"为准。...那么,测试CI的那个问题难道是参数指定了不存在(或者已停止)的kafka节点? 带着疑问,再次敲了命令,这次在"--broker-list"中指定了一个实际不存在的ID。...经过修改参数后,CI用例都成功通过了。 小结一下,本问题其实是一个很简单的问题,关键在于使用时需要清楚地知道对应参数的含义,否则就可能引起问题。

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

    一个完整的 Web 请求到底发生了什么

    本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处理完成后...HTTP协议请求包,请求服务器里的资源文档; 在服务器端,实际上还有复杂的业务逻辑:服务器可能有多台,到底指定哪台服务器处理请求,这需要一个负载均衡设备来平均分配所有用户的请求; 还有请求的数据是存储在分布式缓存里还是一个静态文件中...Client 首先发送一个连接试探,SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示 Client 自己的初始序号(seq = 0 就代表这是第...同时,如果你频繁的发消息给别人,那么就在频繁的创建连接,关闭连接,这是很消耗资源的。所以微信就干脆不关闭 TCP 连接,这样微信服务器就可以给我们的浏览器发消息。...至此,一个 Web 请求的大致流程差不多就是这样,东西还是挺多的,如果有不完善的地方,欢迎大家补充。

    1.1K40

    一个完整的 Web 请求到底发生了什么

    本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处理完成后...,请求服务器里的资源文档; 在服务器端,实际上还有复杂的业务逻辑:服务器可能有多台,到底指定哪台服务器处理请求,这需要一个负载均衡设备来平均分配所有用户的请求; 还有请求的数据是存储在分布式缓存里还是一个静态文件中...Client 首先发送一个连接试探,SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示 Client 自己的初始序号(seq = 0 就代表这是第...同时,如果你频繁的发消息给别人,那么就在频繁的创建连接,关闭连接,这是很消耗资源的。所以微信就干脆不关闭 TCP 连接,这样微信服务器就可以给我们的浏览器发消息。...至此,一个 Web 请求的大致流程差不多就是这样,东西还是挺多的,如果有不完善的地方,欢迎大家补充。 参考链接 https://www.jianshu.com/p/558455228c43

    1.4K20

    盘点一个Python网络爬虫中请求参数的一个小坑

    一、前言 国庆期间在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下: 二、实现过程 这里【瑜亮老师】指出,一般情况下都是data = json.dumps(data),...但是很巧合的是,这个请求参数看上去多了一层字典嵌套,让人琢磨不透。...后来【千葉ほのお】和【论草莓如何成为冻干莓】指出,将请求参数中的0和1去除,只保留剩下的参数即可。 经过一番尝试之后,发现请求可以成功。...所以下次遇到类似这种情况的时候,不妨也试试看,将一些0,1这样的干扰参数去除,也许可以事半功倍呢! 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Python网络爬虫请求参数处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

    37010

    Go 语言高性能 Web 框架 Gin 框架路由和请求参数的使用方式

    01 、介绍 使用 Web 框架,可以在开发项目时更高效。Web 框架一般会支持基础功能,比如路由、处理请求参数、渲染返回结果、中间件等。 本文我们介绍一款轻量级 Web 框架 Gin 框架。...此外,Gin 框架还提供了一个可以匹配所有 HTTP 方法的快捷方式,r.Any(),和一个可以匹配指定 HTTP 方法的快捷方式,r.Match()。...03 、请求参数 接下来,我们介绍 Gin 框架怎么接收请求参数。我们按照请求参数的格式,分别介绍各种格式的请求参数的接收方式。...04 、总结 本文我们介绍 Go 语言高性能 Web 框架 Gin 框架的路由和请求参数的一般使用方式,建议读者朋友们动手运行文章中的示例代码。...关于路由组和其它读取请求参数的方式,感兴趣的读者朋友们,可以查阅Gin 文档[1]和Gin 源码[2],了解更多。

    13710

    【Web技术】975- 由封装一个请求库所想到的

    前言 最近想写一个可以适配多平台的请求库,在研究 xhr 和 fetch 发现二者的参数、响应、回调函数等差别很大。...问题在于,请求库内置多个底层请求内核,内核支持的参数是不一样的,上层库可能做一些处理,抹平一些参数的差异化,但对于底层内核的特有的功能,要么放弃,要么只能在参数列表中加入一些具体内核的特有的参数。...比如在 axios 中,它的请求配置参数列表中,罗列了一些 browser only的参数,那对于只需要在 node 环境中运行的 axios 来说,参数多少有些冗余,并且如果 axios 要支持其他请求内核...设计实现 我们的请求库要想与请求内核无关,那么只能采用内核与请求库相分离的模式。使用时,需要将请求内核传入,初始化一个实例,再进行使用。或者基于请求库,传入内核,预置请求参数来进行二次封装。...// false 复制代码 个人目前还没有想到,判断 prequest 是不是 PreQuest 实例有什么用,并且也没有想到好的解决办法。

    50520

    关于 HTTP GETPOST 请求参数长度最大值的一个理解误区

    刚看到群里又有同学在说 HTTP 协议下的 Get 请求参数长度是有大小限制的,最大不能超过  XX,而 Post 是无限制的,看到这里,我想他们定是看多了一些以讹传讹的博客或者书籍, 导致一种理解上的误区...web 服务器决定和设置的,各种浏览器和 web 服务器的设定 均不一样,这依赖于各个浏览器厂家的规定或者可以根据 web 服务器的处理能力来设定。...附 GET VS POST: 1、多数浏览器对于POST采用两阶段发送数据的,先发送请求头,再发送请求体,即使参数再少再短,也会被分成两个步骤来发送(相对于GET),也就是第一步发送header数据...3、GET参数是带在URL后面,传统IE中URL的最大可用长度为2048字符,其他浏览器对URL长度限制实现上有所不同。POST请求无长度限制(目前理论上是这样的)。...但实际上 server 端也可以用作资源更新,但是这种用法违反了约定,容易造成 CSRF(跨站请求伪造)。

    5K110

    一个值得深思的小问题 - 请求中的参数值为空要不要携带该参数?

    最近一个朋友疯狂的和我吐槽公司的后端,说很常规、很普通的一个事儿,也就是验证一下子的事儿,非要搞的那么复杂,治标不治本,技术玩来玩去不但没进步还倒退了。 这是怎么回事呢?...我这朋友的问题是这样的,前端请求接口,带过去了一些参数,但是其中有个参数没值,也就是空,但是呢后端在接收该值的时候没有类型判断(该字段是int类型),相当于直接把一个空字符串直接转为int类型。...比如,请求参数如下 name=bigerfe&age=&a=1 其中参数age是int类型,但是前端传了空,后端取参数的时候报错了。...然后要出一个传参规范,声明string类型的字段如果值为空串的,请求的时候就不要携带该参数。其他类型的会给一个默认值。...你可能会说,不携带这个参数和传空串完全是两个意义。 如果是你遇到了这个问题,你该怎样处理?接受还是反驳?能不能找到一个走不通的场景? 。。。。。。。

    3.3K20

    从协议入手,剖析OAuth2.0(译 RFC 6749)

    否则,它将创建另一个受保护的资源请求。 (F) 由于访问令牌无效,资源服务器返回一个无效的令牌错误。 (G) 客户端请求一个新的访问令牌,并提交刷新令牌。...没有这些组件,针对一个特定的授权服务器,资源服务器的互操作,客户端必须手动配置。这个框架的设计带有明确的期望,未来的工作将定义实现完整Web规模互操作性所必需的规范配置文件和扩展。...由于这是一个基于重定向的流程,客户端必须能够与资源所有者的用户代理(通常是一个webbrowser)进行交互,并能够接收来自于授权服务器的传入请求(重定向)。...由于这是一个基于重定向的流程,客户端必须能够与资源所有者的用户代理(通常一个web浏览器)进行交互,并且能够接受来自于授权服务传入(通过重定向)的请求。              ...(E)客户端Web托管资源服务器返回一个web页面,并包含能够在URI片段中的提取访问令牌(和其他参数)的脚本。

    5K20

    网站HTTP错误状态代码及其代表的意思总汇

    401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。 401.4 未经授权:Web 服务器上安装的筛选器授权失败。 401.5 未经授权:ISAPI/CGI 应用程序授权失败。...如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。...501 标题值指定的配置没有执行。 502 Web 服务器作为网关或代理服务器时收到无效的响应。 WIN2003 SERVER IIS6.0 ASP 错误解析 事件 ID 描述 0100 内存不足。...0172 路径无效。MapPath 方法的路径必须是虚拟路径。使用了一个实际的路径。 0173 路径字符无效。MapPath 方法的 Path 参数中指定了一个无效字符。 0174 多个路径字符无效。...0237 Cookie 规范无效。METADATA 标记包含无效的 NAME 参数或缺少该参数。 0238 属性值丢失。没有为 '|' 属性指定值。 0239 无法处理文件。

    6K20

    10个有关RESTful API良好设计的最佳实践

    Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的。   ...car 该方法不允许(405) 更新一个指定的资源 擅长指定资源 不要使用: /getAllCars /createNewCar /deleteAllRedCars 2.Get方法和查询参数不应该涉及状态改变...sort=-manufactorer,+model 这是返回根据生产者降序和模型升序排列的car集合 Field selection 移动端能够显示其中一些字段,它们其实不需要一个资源的所有字段,给API...– 新的资源已经成功创建 204 – OK – 资源已经成功擅长 304 – Not Modified – 客户端使用缓存数据 400 – Bad Request – 请求无效,需要附加细节解释如 "...JSON无效" 401 – Unauthorized – 请求需要用户验证 403 – Forbidden – 服务器已经理解了请求,但是拒绝服务或这种请求的访问是不允许的。

    64450

    JavaWeb之Request对象和Response对象详解

    一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象 一、Response对象 1.Resonse的继承结构...即使不明确指定浏览器也会缓存资源,这种缓存没有截至日期。当在地址栏重新输入地址时会用缓存,但是当刷新或重新开浏览器访问时会重新获得资源。...request.setCharacterEncoding(“gb2312”);对GET方式提交无效的原因是:该代码只设置请求实体的编码,而GET提交的数据是存放在请求行中的[资源名?...param1=”张三”¶m2=123],所以对GET请求的方式无效。...方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

    93230

    Servlet生命周期与HTTP协议

    响应客户请求阶段 初始化阶段过后,就会进入响应客户请求阶段,web服务器就会调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为参数传递给service...下面这是一个常见的http请求头的格式: GET /form.html HTTP/1.1 (CRLF) Accept:p_w_picpath/gif,p_w_picpath/x-xbitmap,p_w_picpath...408——客户端没有在用户指定的饿时间内完成请求 409——对当前资源状态,请求不能完成 410——服务器上不再有此资源且无进一步的参考地址 411——服务器拒绝用户定义的Content-Length...属性请求 412——一个或多个请求头字段在当前请求中错误 413——请求的资源大于服务器允许的大小 414——请求的资源URL长于服务器允许的长度 415——请求资源不支持请求项目格式 416——请求中包含...Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段 417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长

    70320

    如何使用Selenium WebDriver查找错误的链接?

    当您在网站上遇到404 /页面未找到/无效超链接时,会想到什么想法?啊!当您遇到损坏的超链接时,您会感到烦恼,这是为什么您应继续专注于消除Web产品(或网站)中损坏的链接的唯一原因。...我将演示了使用Selenium Python进行的断开链接测试。 Web测试中的断开链接简介 简单来说,网站(或Web应用程序)中的损坏链接(或无效链接)是指无法访问且无法按预期工作的链接。...400(错误请求-超时) 这表明HTTP请求已超时。 400(错误请求-空) 服务器返回的响应为空,没有内容,也没有响应代码。...指向410页的链接将访问者发送到无效资源。 503服务不可用) 这表明服务器暂时超载,因此服务器无法处理请求。这也可能意味着正在服务器上进行维护,从而指示搜索引擎有关站点的临时停机时间。...请求模块使您可以发送各种HTTP请求。它也可以用于在URL中传递参数,发送自定义标头等。

    6.7K10

    Ajax之一 简介篇

    Ajax的主要思想是使Web页可以在后台(或者说是异步的)发送HTTP请求,而不需要重新读取整个页面(用Asp.Net的话来说,就是不需要往返行程或回发)。...Ajax的基本原理为:XmlHttpRequst从服务器(数据服务器或Web服务器)获取数据到客户端的内存中,然后JavaScript根据实际需要对这些资源进行处理,并通过CSS和DOM实现界面布局呈现给浏览器...此后从该AJAX应用程序的同一个页面向服务器发送的请求就可以做成能够返回文本或Xml的Http请求了(图1-7中的第三步和第四步)。...项目一:建立没有AJAX的简单的Asp.Net页面 首先建立一个没有使用AJAX功能的简单页面,该页面只需要一个标签控件和一个服务器端按钮控件。...项目二:建立没有AJAX的简单的Asp.Net页面 1.在项目一的基础上,需要添加两个服务器控件:一个是标签控件Label2,一个是按钮控件Button2。

    9210

    基于Django的电子商务网站开发(连载5)

    (1)OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送‘*’的请求来测试服务器的功能性。...(3)GET:向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如,在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。...来看下图1-8,这是一个用Fidder4捕捉到访问http://www.3testing.com网站的请求内容。...IIS 6.0专用代码 404 Not Found 服务器无法找到被请求的页面 404.0 没有找到文件或目录 404.1 无法在所请求的端口上访问Web站点 404.2 Web服务扩展锁定策略阻止本请求...看下图1-10,这是一个用Fidder4捕捉到访问http://www.3testing.com网站的应答内容。 ?

    85920

    OAuth 2.0 的探险之旅

    (B) 客户端收到授权许可(code),这是一个代表资源所有者授权的凭证。 (C) 客户端通过授权许可(code)向授权服务器发起请求, 并期望获取一个访问令牌(access token)。...如果客户端知道了访问令牌已经过期,它跳到步骤(G), 如果不知道, 继续向资源服务器发起请求。 (F) 由于访问令牌无效,资源服务器返回无效的令牌错误。...还有一个特点是, 授权码模式是基于Web重定向的流程。..., 客户端可以维护一个在请求和回调之间的状态, 授权服务器重定向到回调地址时, 会带上这个参数, state 可以防止跨站点请求伪造-CSRF攻击。...请求参数: 响应参数: Client Credentials Grant 客户端凭证模式 客户端凭证模式的特点是, 客户端就是资源所有者, 客户端访问资源也不需要用户的授权, 因为这个过程中没有用户

    1.7K10
    领券