React调用.NET Core接口遇302重定向,axios.get何时触发响应?
问题解答
核心结论
最初的React请求的响应触发时机分两种情况,取决于你是否配置了禁止浏览器自动跟随重定向:
1. 默认自动跟随重定向(绝大多数场景的默认行为)
此时你的React代码不会感知到302响应,直到.NET Core最终返回JSON数据时,最初的请求的await/then才会被触发,拿到的是最终的JSON响应。
这是因为浏览器的fetch/XMLHttpRequest(包括axios等封装库)默认会自动处理302重定向:一旦收到.NET Core返回的302,浏览器会立刻向Location头指向的URL发起新请求,直到拿到最终的非重定向响应(也就是你说的回调后返回的JSON),才会把这个最终结果返回给你的React代码。
2. 禁用自动跟随重定向
如果你在请求中显式配置了禁止自动重定向(比如fetch里设置redirect: 'manual',或者axios设置maxRedirects: 0),那么最初的React请求会立刻触发响应,拿到的就是.NET Core返回的302响应,响应头里会包含重定向的目标地址,后续的跳转逻辑需要你自己在React代码里处理。
针对你描述的场景:如果是默认配置,你的React代码会等到.NET Core返回最终JSON时才会收到响应;但从HTTP协议层面,最初的请求确实在收到302时就已经完成了,只是浏览器帮你自动完成了后续的重定向流程。
内容的提问来源于stack exchange,提问作者Ceased
相关产品推荐
相关产品推荐

