You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在httr重定向时不传递Authorization请求头

httr重定向时携带认证头导致401的解决方案探讨

该问题已在相关技术社区及项目仓库中提及并跟进,核心触发场景如下:

  • 使用httr向需要Authorization请求头的URL发起GET请求
  • 目标API返回重定向响应,指向一个无需认证的预签名URL
  • httr自动跟随重定向时,会将原请求的Authorization头一并发送到新URL
  • 由于原请求的Bearer令牌对重定向URL无效,最终返回401未授权状态码

这类重定向时误携带认证头的问题,在浏览器等客户端场景中也较为常见。

目前可以通过手动拆分重定向流程的方式解决问题(以下示例为HTTP转HTTPS的重定向场景),但需要编写独立于httr自动跟随逻辑的代码。现提出疑问:httr是否支持直接配置以避免此类问题,还是编写自定义包装器为最优实践?

手动处理重定向的示例代码

library(httr)
# 确保curl版本高于7.58(需满足相关安全规范要求)
curl::curl_version()$version
# 发送请求时禁用自动跟随重定向
resp <- GET(
  "http://github.com",
  config(followlocation = FALSE),
  authenticate("user", "pwd", type = "basic")
)
# 从响应头中提取重定向目标URL
redirected_url <- headers(resp)[["location"]]
# 不带认证信息发起重定向后的请求
resp_redirect <- GET(redirected_url)

对应控制台输出

> curl::curl_version()$version
[1] "7.60.0"

> resp
Response [http://github.com/]
  Date: 2022-08-24 09:11
  Status: 301
  Content-Type: <unknown>
<EMPTY BODY>

> redirected_url
[1] "https://github.com/"

> resp_redirect
Response [https://github.com/]
  Date: 2022-08-24 09:12
  Status: 200
  Content-Type: text/html; charset=utf-8
  Size: 301 kB

内容的提问来源于stack exchange,提问作者StephGC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:52:16