http请求使用代理,nginx 400 bad request

本文涉及的产品
.cn 域名,1个 12个月
简介: 事件:公司的安卓app部分接口使用抓包工具时,如Charles。 返回400错误。后端使用nginx服务,php语言。分析问题:1、安卓不使用抓包工具,可以正常请求接口数据2、nginx同时对android、ios提供服务,ios正常3、安卓只有使用代理工具,才会出现400有此可见, 问题出在代理工具上。

事件:

公司的安卓app部分接口使用抓包工具时,如Charles。 返回400错误。

后端使用nginx服务,php语言。

分析问题:

1、安卓不使用抓包工具,可以正常请求接口数据

2、nginx同时对android、ios提供服务,ios正常

3、安卓只有使用代理工具,才会出现400

有此可见, 问题出在代理工具上。 为什么ios使用同一个代理工具没有问题?

百度、google说 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。

又有文章说,http cookie值太大,http头部信息错误等

然后按照网上的方法修改了请求数据和nginx缓存配置,nginx依旧无情的返回400,网上的解决方案基本上都试过了,依旧没有解决问题。
将接口的Url放在firefox里访问,可以正常请求。那会不会是代理工具做转发时修改了http请求的信息?

web代理工具的原理:

一般的代理工具是将本地客户端的请求先发送给代理,然后由代理向服务器发送请求,代理接收到服务器回复后,将其再转发给客户端。

这么来看,很有可能是代理工具在做http转发时,修改了请求信息。

api的访问方式是:http://api.zhanglirong.cn?uid=1&client_type=android&method=app.passport.user&v=1

代理工具拿到客户端的请求后,会做url拆分:

host : api.domain.com

path : 

params

    uid : 1

    client_type : android

    method : app.passport.user

    v : 1

拆分后,观察到path对应的是空, 也就是说此url没有文件路径,但是这个Url在firefox可以访问。

然后又拿这个链接放在firefox里, 发现firefox自动把地址改成了:http://api.zhanglirong.cn/?uid=1&client_type=android&method=app.passport.user&v=1 , 在域名后,?问号前加了 /

然后修改了代理工具中path的值 path : /

执行下 repeat 重发一次请求, 返回200, 发送成功。

问题原因:

android请求时,域名后面没有跟上目录部分,所以代理工具解析时 path是空, 转发请求时, 当时也是空。

浏览器能自动在域名后面补充 / ,所以使用浏览器访问没有问题。

这问题 挺坑的。。。。

以下面这个URL为例,介绍下普通URL的各部分组成

http://www.zhanglirong.cn:8080/news/index.php?boardID=5&ID=24618&page=1#name

1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符

2.域名部分:该URL的域名部分为“www.hunchelaila.com”。一个URL中,也可以使用IP地址作为域名使用

3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

5.文件名部分:从域名后的最后一个“/”开始到“?” 为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“ /”开始到结束,都是文件名部分。本例中的文件名是“index.php”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
目录
相关文章
|
5天前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
20天前
|
Web App开发 缓存 JavaScript
使用TypeScript创建高效HTTP代理请求
使用TypeScript创建高效HTTP代理请求
|
15天前
|
数据采集 安全 大数据
http代理一般受众于哪些人群?
HTTP代理主要适用于三类人群:数据采集专业人士,如网络爬虫开发者;网络兼职者,例如游戏试玩、电商优化者,利用代理IP提高工作效率;以及网络推广者,借助代理发布广告帖子以提升品牌知名度。代理提供安全、效率和稳定性支持。
47 3
http代理一般受众于哪些人群?
|
20天前
|
安全 网络安全 数据安全/隐私保护
http代理的带宽会受到什么因素的影响?
在数字化时代,网络安全与HTTP代理服务密切相关。代理服务器的硬件性能、安全机制,以及同时使用人数都会影响带宽。此外,IP质量、并发数也是决定带宽的关键因素。选择高性价比的HTTP代理服务商能确保更快的速度和更广泛的覆盖。HTTP代理在网络营销等领域中扮演重要角色,用户应根据具体需求选择合适的代理类型。
20 1
http代理的带宽会受到什么因素的影响?
|
27天前
|
数据采集
http代理IP能开展哪些应用?
在互联网时代,HTTP代理IP广泛应用于营销推广、排名优化和数据采集。对于营销,它帮助企业在社交媒体上切换IP以确保推广活动顺利进行;在排名优化中,代理IP避免了因同一IP多账号操作导致的账号暂停,提升企业产品曝光;在数据采集时,通过不断切换IP,提高数据抓取效率,确保任务的高效执行。
15 2
http代理IP能开展哪些应用?
|
28天前
|
数据采集 安全
短效http代理为什么比长效http代理用的人多?
在信息化时代,互联网广泛应用,http代理IP成为许多业务的必需。短效HTTP代理因其安全(及时切换保护用户信息)、广泛的应用场景(如数据采集、广告投放)、较低的成本和更高的访问效率,故使用人数超过长效HTTP代理。了解这些差异,有助于选择合适的代理服务。
26 1
短效http代理为什么比长效http代理用的人多?
|
18天前
|
网络安全 数据安全/隐私保护
http代理ip怎样协作电商行业做业务拓展?
在数字化时代,网络安全和隐私保护日益重要,HTTP代理IP成为新兴趋势。它助力电商行业通过匿名访问收集消费者反馈、分析竞品价格和信息,以优化产品、制定市场策略,促进业务拓展。
18 0
http代理ip怎样协作电商行业做业务拓展?
|
20天前
|
安全 网络协议 网络安全
Socks5代理与Http代理该如何选择
在数字时代,网络安全至关重要,Socks5代理和Http代理成为隐私保护工具。Socks5代理支持TCP/UDP,适用于多种网络服务,提供身份验证,安全但配置复杂;Http代理专注处理Web流量,速度快,配置简单,但仅限Http协议,安全性较低。选择时需根据需求平衡性能与安全。
|
21天前
|
Java 应用服务中间件 nginx
【Azure Spring Apps】Spring App部署上云遇见 502 Bad Gateway nginx
在部署Azure Spring App后,用户遇到502 Bad Gateway错误,问题源于Nginx。解决方案是检查并关闭Spring App的ingress-to-app TLS配置,因为若未启用HTTPS访问,Nginx通过HTTPS访问应用会导致此错误。
|
20天前
|
Web App开发 存储 网络安全
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
本文介绍了在 Mac 上使用的 HTTP 和 HTTPS 抓包工具 Charles 的配置方法。首先,强调了安装证书对于抓取 HTTPS 请求的重要性,涉及 PC 和手机端。在 PC 端,需通过 Charles 软件安装证书,然后在钥匙串访问中设置为始终信任。对于 iOS 设备,需设置 HTTP 代理,通过电脑上的 IP 和端口访问特定网址下载并安装证书,同时在设置中信任该证书。配置 Charles 包括设置代理端口和启用 SSL 代理。完成这些步骤后,即可开始抓包。文章还提及 Android 7.0 以上版本可能存在不信任用户添加 CA 证书的问题,但未提供解决办法。
71 0
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题