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

Next.js getServerSideProps请求缺失Referer头:原因及传参方案咨询

Next.js getServerSideProps调用后端API缺失Referer的解决方案

1. 如何手动携带Referer头传递至后端

在getServerSideProps中,服务器端发起的请求不会自动携带Referer,需要手动在请求头中添加。可以通过context.req获取当前用户请求的源地址和路径,拼接成合法的Referer值:

示例1:使用fetch

export async function getServerSideProps(context) {
  // 拼接当前请求的Referer值,origin为空时用预设域名兜底
  const origin = context.req.headers.origin || process.env.NEXT_PUBLIC_APP_DOMAIN;
  const referer = `${origin}${context.req.url}`;

  const res = await fetch('你的后端API接口地址', {
    method: 'GET', // 根据实际请求方法调整
    headers: {
      'Referer': referer,
      // 其他必要请求头,如Content-Type、Authorization等
    }
  });

  const data = await res.json();
  return { props: { data } };
}

示例2:使用axios

import axios from 'axios';

export async function getServerSideProps(context) {
  const origin = context.req.headers.origin || process.env.NEXT_PUBLIC_APP_DOMAIN;
  const referer = `${origin}${context.req.url}`;

  const res = await axios.get('你的后端API接口地址', {
    headers: {
      'Referer': referer
    }
  });

  return { props: { data: res.data } };
}

2. 为什么该场景下Referer头会缺失

Referer头是浏览器在前端发起请求时自动添加的字段,用于标识请求的来源页面。但getServerSideProps是在Next.js服务器端执行的代码,此时的请求是Next.js服务器直接向后端服务器发起的服务器间请求,完全脱离了浏览器环境,所以不会有浏览器自动注入的Referer头,后端自然接收不到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:05:16