当使用正向代理请求cos资源的时候,cos对http协议的支持会比较严谨,“宽容性”不够。可能对http协议更加谨慎一点反而更好吧curl
响应405的请求细节ui
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"}
正常的请求应该是url
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就正常了,好比这样code
curl -v --proxy "proxy-ip:8090" --proxytunnel "http://nfs-test.cosgz.myqcloud.com/user_logo/1000293461_50x50.jpg?sign=your-sign"
或者直接使用Https协议orm