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

如何设置前端仅接收服务端的状态码与Cookie响应?

解决RTK Query因无JSON响应报错的问题

问题根源是RTK Query的fetchBaseQuery默认会强制将响应解析为JSON格式,而你的后端仅返回状态码和Cookie,没有JSON响应体,导致解析失败报错。可以通过以下方式修改前端代码:

针对单个接口禁用JSON解析

直接在刷新Token的endpoint中配置responseHandler,告诉RTK Query不要解析JSON,改用文本处理响应,同时可自定义返回内容:

import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const refreshApi = createApi({
  reducerPath: "apiSlice",
  baseQuery: fetchBaseQuery({
    baseUrl: `${process.env.NEXT_PUBLIC_SERVER_URL}`,
    credentials: "include",
  }),
  endpoints: (builder) => ({
    refreshAuthorization: builder.query({
      query: () => "/api/auth/refresh",
      // 禁用JSON解析,改用文本处理响应体
      responseHandler: 'text',
      // 自定义转换响应,返回状态码供前端判断请求结果
      transformResponse: (_, meta) => ({
        status: meta?.response?.status
      }),
    }),
  }),
});

export const { useRefreshAuthorizationQuery } = refreshApi;

补充说明

  • 设置responseHandler: 'text'后,RTK Query会把响应体当作纯文本处理(即使是空响应体也不会报错)。
  • 浏览器会自动处理后端设置的httpOnly Cookie,不需要前端额外操作,只要请求的credentials: "include"配置正确即可。
  • 如果后端返回的是204 No Content(无响应体),也可以用responseHandler: 'none',效果类似。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:04:57