postforobject 设置代理_禁用 RestTemplate 的自动重定向功能

Cors Proxy 该不该自动重定向

Client 通过 CorsProxy 请求了一个页面

CorsProxy 收到请求后,自己去重新请求目标页面

目标页面返回了 302 重定向

CorsProxy 收到后自动消化了这个重定向

但是在处理 Location 的时候,这个 Location 的 URL 包含一个空格

CorsProxy 抛错

场景是这样的,那么这里有2个问题。

1) 为什么 CorsProxy 自动跳转的时候会抛错,而浏览器自动跳转的时候不会抛错?

这个和框架实现原理有关。严格的来说,URL 里是不允许有空格的,但是如果对空格解码,解码出来的还是空格。

浏览器在这方面的要求不是很严格,而 RestTemplate 对这个要求很严格。

坑爹的是,RestTemplate 只会抛一个 400 bad request 错误。

后来我尝试着用别的框架去调用这个地址才看到了详细的错误内容,然后才意识到是 Location 里的 URL 里包含一个空格!

2) 为什么 RestTemplate 会自动去做重定向?该不该做?

其实在大部分场景中,框架和浏览器自动处理重定向是有好处的。难不成你 Javascript 的 Ajax 请求中每次都要手动处理重定向?这个太麻烦了!

可我的这个 CorsProxy 和一般的 Web 接口不同,我不应该内部消化,我只是一个转发者,我要把数据原封不动地抛回去!

所以我标题中的答案就很清楚了,CorsProxy 不该内部消化重定向。

RestTemplate

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值