.net6 使用 UseHttpsRedirection 中间件强制将请求从 http 转 https,但 Authorization 信息丢失

2021-11-22 15:42:08 +08:00
 pedward

前端(前端是一个.netcore 2.1 的 mvc 项目)有一个带 Authorization 的 http 请求去 call api(api 是.net6 的),api 会使用 UseHttpsRedirection 中间件会将 http 转 https ,但转的过程中 Authorization 信息丢失了,导致返回 401 。两个项目都是在本地开发环境运行的。

各位大佬们,知道什么原因吗?

1758 次点击
所在节点    .NET
2 条回复
Vegetable
2021-11-22 15:54:38 +08:00
部分客户端会在重定向时,有选择的移除 authorization 这个 header ,这是一种出于安全性考虑的进行的设计。
比如 axios 使用的依赖 follow-redirects 这部分代码
https://github.com/follow-redirects/follow-redirects/blob/main/index.js#L395

所以想解决的话,首先要搞清楚你的客户端行为,针对性的操作,最简单的就是:自定义重定向行为,客户端监测到重定向之后,拿到目标链接重新拼装请求。
pedward
2021-11-23 10:21:29 +08:00
@Vegetable 感谢回复,确实是出于安全性考虑,将 authorization 除去了。自己也在 stackoverflow 上找了找,也是这样说的( https://stackoverflow.com/questions/28564961/authorization-header-is-lost-on-redirect),看来是需要重新拼装请求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/817154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX