HTTP CONNECT 方法

这篇具有很好参考价值的文章主要介绍了HTTP CONNECT 方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

隧道/代理

使用

客户端发送请求报文

客户端发送响应报文


隧道/代理

在 HTTP 协议中,CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。

例如,CONNECT 可以用来访问采用了 SSL (en-US) (HTTPS) 协议的站点。客户端要求** 代理 **服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。

CONNECT 是一个应用范围为点到点的方法。

————————————————

版权声明:本文为CSDN博主「二十克」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:Http协议之CONNECT方法_http connect_二十克的博客-CSDN博客

重点:

隧道:Tunnel

代理: Proxy

在我们开发普通应用的时候,涉及到HTTP服务器的请求,通常都会使用代理的方式,原因嘛,可能基于保护服务器(通常是 服务器反向代理),或者用户的受限,比如只能通过公司网关访问网络(通常是正向代理),但是这两种通常我们都归于 普通代理的范畴,就是有一个代理服务器作为中间商,拿到数据包,解析http数据包,然后代为转发一个http请求。

于此不同的是,我们的Tunnel-proxy 隧道代理。和普通代理的应用层协议不同的是:隧道代理使用TCP协议。

 隧道代理通过HTTP协议正文部分(Body)完成通讯,以HTTP的方式实现任意基于TCP的应用层协议的代理

 隧道代理原理:HTTP客户端通过CONNECT方法请求隧道代理创建一条到达任意目标服务器和端口的TCP连接,并对客户端和服务端之间的后续数据进行盲转发。

忙转发就是代理服务器看到的报文都是加密的数据,不是明文!

http请求connect方法,网络,http,网络协议,代理模式,tcp

图解:

  1. 客户端端发送CONNECT报文信息,即上图的a
  2. 代理服务器即上图的网关,通过客户端提供的请求地址和端口,来与目标服务器建立TCP连接隧道,即上图的b
  3. 连接建立成功之后,服务端返回HTTP/1.* 状态码 描述 形式的报文信息即上图的d,返回给客户端。此时就建立起了双向通道
  4. 客户端和服务端可以通过隧道代理来发送任意数据,直到任意一方关闭连接,在此中间发送的数据都是加密的,代理服务器是不能解密的!
  5. 代理服务器只维护 代理到服务器的 TCP连接,并直接转发数据包,并不做拆包解析等处理。

使用

在HTTP中常用的方法有get,post,head。但也有很多不常用的method,其中就包括connect。

1、HTTP代理使用的就是connect这个方法,connect在网页开发中不会使用到。

2、connect的作用就是将服务器作为代理,让服务器代替用户去访问其他网页(说白了,就是翻墙),之后将数据返回给用户。

3、connect是通过TCP连接代理服务器的。假如我想告诉代理服务器我想访问wenmingxing - 简书网站,就需要首先建立起一条从我的客户端到代理服务器的TCP连接,然后给代理服务器发送一个HTTP报文:

客户端发送请求报文

CONNECT https://www.jianshu.com/u/f67233ce6c0c:80 HTTP/1.1
//或者
CONNECT https://www.jianshu.com/u/f67233ce6c0c:80 HTTP/1.0

当服务端返回407状态码,表示需要服务端提供授权码!这个时候就需要代理发送Proxy-Authorization数据!

Proxy-Authorization: basic aGVsbG86d29ybGQ=

 Proxy-Authorization 是一个请求首部,其中包含了用户提供给代理服务器的用于身份验证的凭证。这个信息通常是在服务器返回了 407 Proxy Authentication Required 响应状态码及 Proxy-Authenticate 首部后发送的。

状态码 407 Proxy Authentication Required 代表客户端错误,指的是由于缺乏浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server )要求的身份验证凭证,发送的请求尚未得到满足。

这个状态码会与 Proxy-Authenticate 首部一起发送,其中包含有如何进行验证的信息。

407 Proxy Authentication Required

客户端发送响应报文

在发送完这个请求之后,代理服务器会响应请求,返回一个200的信息,但这个200并不同于我们平时见到的OK,而是代表连接建立了。文章来源地址https://www.toymoban.com/news/detail-626177.html

HTTP/1.1 200 Connection Established
或者
HTTP/1.0 200 *******

//******* 和状态码不是固定的!可以自定义!

到了这里,关于HTTP CONNECT 方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP协议概述 | 简析HTTP请求流程 | HTTP8种请求方法

    目录 🌏 HTTP的简单介绍 何为HTTP HTTP1.0与HTTP1.1 🌏 HTTP的请求方法 1、OPTIONS 2、HEAD 3、GET 4、POST 5、PUT 6、DELETE 7、TRACE 8、CONNECT 🌏 HTTP的工作原理 🌏 HTTP请求/响应的步骤 1、客户端连接到Web服务器 2、浏览器客户端发送HTTP请求 3、服务器接受请求并返回HTTP响应 4、释放连接TCP连

    2024年02月03日
    浏览(40)
  • Python中使用HTTP代理进行网络请求

    在Python中,HTTP代理是一种常用的技术,用于控制和修改HTTP请求和响应。通过使用HTTP代理,我们可以更好地控制网络请求的行为,提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中使用HTTP代理进行网络请求。 一、HTTP代理的原理 HTTP代理是一种服务器,它位于客

    2024年01月19日
    浏览(69)
  • 安卓网络请求1————Http协议

    http是超文本传输协议的缩写(Hyper Text Transfer Protocol),是从万维网服务器传送到本地浏览器的传送协议 HTTP的协议工作于客户端——服务端的框架上,即客户端向服务端发送请求,服务端接收请求后向客户端发送响应信息 1.http是无连接的:无连接的含义是限制每次连接值处

    2024年02月06日
    浏览(45)
  • Python使用HTTP代理实现网络请求的自动化

    随着网络技术的发展,网络请求成为了许多应用的重要组成部分。然而,手动发送网络请求不仅效率低下,而且容易出错。为了解决这个问题,我们可以使用Python来实现网络请求的自动化。而HTTP代理可以帮助我们更好地控制和管理这些请求。 在Python中,有许多库可以用来发

    2024年01月19日
    浏览(47)
  • Python使用HTTP代理实现网络请求的调试和日志记录

    在Python中,使用HTTP代理可以实现网络请求的调试和日志记录。通过HTTP代理,我们可以拦截、修改或记录网络请求和响应的数据,以便更好地了解和调试网络请求。 下面是一个使用Python和 httplib2 库实现HTTP代理的示例,同时对请求和响应进行调试和日志记录: python 复制代码

    2024年01月19日
    浏览(65)
  • Chrome/Safari 浏览器怎么查看网络请求的 http 协议版本

    通过 Chrome 或者 Safari 浏览器的开发者工具查看网络请求后,发现只能看到 scheme 是 https,但是看不到 http 协议是 1.1 还是 2,亦或者是 http3 查看 http 请求 http 协议版本的方法是:鼠标右键表头中的任何一项,随后勾选上「Protocol」 随后可以看到新增了一列 Protocol,显示了 htt

    2024年02月15日
    浏览(60)
  • 【网络应用层协议】【HTTP】详解HTTP与HTTPS、POST 请求与 GET请求 、TCP与UDP、cookie和session的区别

    目录 1. HTTP和HTTPS的区别 2. POST 请求与 GET 请求区别 3. TCP与UDP的区别 4. cookie和session的区别

    2024年04月14日
    浏览(49)
  • 《踩坑日记》org.apache.http.conn.HttpHostConnectException: Connect to localhost:80 failed: Connection ref

              端口占用,导致只能run一个HelloRouter,然后另一个就出现了 org.apache.http.conn.HttpHostConnectException: Connect to localhost:80 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect链接失败被拒绝             百度过,不是说依赖问题就是local host的配置路径

    2024年02月12日
    浏览(49)
  • 利用HTTP代理实现请求路由

    嘿,大家好!作为一名专业的爬虫程序员,我知道构建一个高效的分布式爬虫系统是一个相当复杂的任务。在这个过程中,实现请求的路由是非常关键的。今天,我将和大家分享一些关于如何利用HTTP代理实现请求路由的实用技巧,希望能对大家构建自己的分布式爬虫系统有所

    2024年02月12日
    浏览(40)
  • HTTP代理如何解决爬虫请求受限

    首先,我们需要理解为什么有些网站会限制对其网站的访问。这些限制可能出于保护隐私、防止恶意攻击、限制访问频率等原因。当然,对于网络爬虫来说,这种限制可能成为一个挑战。因此,HTTP代理是一种可以帮助解决这个问题的技术。 HTTP代理是一种服务器,充当客户端

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包