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

Angular Universal SSR渲染时修改User-Agent的方法

修改SSR模式下API请求的User-Agent

根据你使用的请求工具,有几种不同的配置方式:

1. Node.js原生http/https模块

如果直接用原生模块发起API请求,在请求选项的headers里指定自定义User-Agent即可:

const https = require('https');
const express = require('express');
const app = express();

app.get('/ssr-page', (req, res) => {
  const apiReqOpts = {
    hostname: 'api.example.com',
    path: '/target-endpoint',
    method: 'GET',
    headers: {
      'User-Agent': '你的自定义User-Agent内容' // 替换为需要的UA字符串
    }
  };

  const apiReq = https.request(apiReqOpts, (apiRes) => {
    let rawData = '';
    apiRes.on('data', (chunk) => { rawData += chunk; });
    apiRes.on('end', () => {
      const responseData = JSON.parse(rawData);
      res.render('your-page-template', { data: responseData });
    });
  });

  apiReq.on('error', (err) => {
    res.status(500).send(`API请求失败: ${err.message}`);
  });
  apiReq.end();
});

2. 使用axios请求库

全局配置(所有请求自动携带UA)

在项目初始化时设置全局默认headers,后续所有axios请求都会沿用这个配置:

const axios = require('axios');
const express = require('express');
const app = express();

// 全局配置自定义User-Agent
axios.defaults.headers.common['User-Agent'] = '你的自定义User-Agent内容';

app.get('/ssr-page', async (req, res) => {
  try {
    const apiRes = await axios.get('https://api.example.com/target-endpoint');
    res.render('your-page-template', { data: apiRes.data });
  } catch (err) {
    res.status(500).send(`API请求失败: ${err.message}`);
  }
});

单次请求配置(仅当前请求生效)

如果只需要特定请求携带自定义UA,在请求参数里单独设置headers:

app.get('/ssr-page', async (req, res) => {
  try {
    const apiRes = await axios.get('https://api.example.com/target-endpoint', {
      headers: {
        'User-Agent': '你的自定义User-Agent内容'
      }
    });
    res.render('your-page-template', { data: apiRes.data });
  } catch (err) {
    res.status(500).send(`API请求失败: ${err.message}`);
  }
});

3. 使用Node.js Fetch API(v18+内置)

如果用原生Fetch发起请求,在请求选项的headers中指定UA:

const express = require('express');
const app = express();

app.get('/ssr-page', async (req, res) => {
  try {
    const apiRes = await fetch('https://api.example.com/target-endpoint', {
      headers: {
        'User-Agent': '你的自定义User-Agent内容'
      }
    });
    const responseData = await apiRes.json();
    res.render('your-page-template', { data: responseData });
  } catch (err) {
    res.status(500).send(`API请求失败: ${err.message}`);
  }
});

内容的提问来源于stack exchange,提问作者Венелин Илиев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:52