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

原生JavaScript调用Response.redirect()提示不是函数是什么原因?

核心问题解答

1. Response.redirect确实是原生JavaScript API,但你的用法存在本质错误

Response.redirect()是Response类的静态方法,而非实例方法,它的设计用途是构造一个全新的重定向类型Response对象,常见于Service Worker场景下拦截请求并返回自定义重定向响应,本身完全不具备触发浏览器页面跳转的功能。

你通过fetch拿到的res是请求返回的Response实例,实例本身就没有redirect这个成员方法,所以调用时报错“不是函数”属于正常表现。

2. 你当前场景的认知误区

你在fetch配置中已经设置了redirect: 'follow',从你打印的Response日志也能看到redirected: true的标记,说明fetch已经自动完成了重定向请求的发送,你拿到的已经是重定向后目标地址的响应内容,这个流程本身就已经携带了对应的HTTP Authentication头。

3. 带认证的页面跳转解决方案

你不想用window.location.href的核心诉求是避免跳转时丢失HTTP Authentication校验,可根据你的认证类型选择对应方案:

  • 如果是浏览器原生支持的Basic/Digest认证:直接使用window.location.href跳转即可,浏览器会自动携带之前缓存的有效认证凭证,不会绕过校验。
  • 如果是自定义请求头的Token认证:
    • 方案1:放弃fetch提交,改用原生HTML表单提交POST请求,服务端返回3xx重定向响应,浏览器会自动跟随跳转,全程携带认证相关的Cookie(需服务端配合把认证凭证存在Cookie中)。
    • 方案2:如果服务端无法改造,可将认证凭证放在跳转URL的query参数中传递(注意评估安全性,敏感凭证不建议用该方案)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:01