正向代理访问腾讯云cos时http405的问题

本文探讨了在使用正向代理请求COS资源时遇到的问题,特别是HTTP协议的兼容性差异导致的405错误。文章详细分析了错误产生的原因,并提供了两种解决方案:一是通过开启正向代理的通道模式;二是直接采用HTTPS协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用正向代理请求cos资源的时候,cos对http协议的支持会比较严谨,“宽容性”不够。可能对http协议更加谨慎一点反而更好吧

响应405的请求细节

GET http://nfs-test.cosgz.myqcloud.com/user_logo/1000293461_50x50.jpg?sign=testsign HTTP/1.1
Host: nfs-test.cosgz.myqcloud.com
User-Agent: curl
Accept: */*

HTTP/1.1 405 Error
Server: TencentCOS
Content-Type: text/octet
ServerIP: 127.1.1.1
Content-Length: 78

{"errorcode":-46152,"errormsg":"bucket name has illegal char, retcode:-46152"}

正常的请求应该是

GET /user_logo/1000293461_50x50.jpg?sign=testsign HTTP/1.1
User-Agent: curl/7.29.0
Host: nfs-test.cosgz.myqcloud.com
Accept: */*

当使用有的正向代理的时候,头部GET部分会跟正常的请求不一样,而cos的服务只认第二种写法(标准的http协议),当然有一些站点就兼容第一种的写法:look

* Rebuilt URL to: www.baidu.com/
*   Trying proxy-ip...
* Connected to  proxy-ip ( proxy-ip) port 8090 (#0)
* Proxy auth using Basic with user 'mom'
> GET http://www.baidu.com/ HTTP/1.1
> Host: www.baidu.com
> Proxy-Authorization: Basic uuuuuuuuuuuuu
> User-Agent: curl
> Accept: */*
> 
< HTTP/1.1 200 OK
< Accept-Ranges: bytes

如果还是用http,1.1的协议,正向代理必须开启通道模式,这样正向代理的get头部拼装就会停止,访问cos就正常了,比如这样

curl -v --proxy "proxy-ip:8090"   --proxytunnel "http://nfs-test.cosgz.myqcloud.com/user_logo/1000293461_50x50.jpg?sign=your-sign"

或者直接使用Https协议

转载于:https://my.oschina.net/xueyi28/blog/1835880

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值