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

React如何根据name属性获取meta标签的content内容(如CSRF token)

React 中获取head内CSRF meta标签值的实现方式

你完全可以直接复用原生JavaScript的DOM查询逻辑,因为这个meta标签属于页面静态注入的全局元素,不在React的虚拟DOM管控范围内,不需要使用React专属的API操作。

基础实现

封装一个通用的获取方法即可,在任意需要用到CSRF Token的位置调用:

const getCsrfToken = () => {
  const csrfMeta = document.querySelector('meta[name="_csrf"]');
  return csrfMeta ? csrfMeta.getAttribute('content') : '';
};

注意:请确保调用该方法时,页面head已经完成加载,meta标签已经被渲染到DOM中

常见使用场景

1. 全局请求拦截器注入(以Axios为例)

如果需要在所有请求中统一携带CSRF Token,可以直接在拦截器中获取并添加到请求头:

import axios from 'axios';

axios.interceptors.request.use((config) => {
  const csrfToken = document.querySelector('meta[name="_csrf"]')?.getAttribute('content');
  if (csrfToken) {
    // 可根据后端要求调整请求头名称,常见为 X-CSRF-Token
    config.headers['X-CSRF-Token'] = csrfToken;
  }
  return config;
}, (error) => Promise.reject(error));

2. React 函数组件内使用

如果需要在组件逻辑中使用该值,建议在useEffect钩子中获取,保证DOM已经渲染完成:

import { useEffect, useState } from 'react';

function SubmitForm() {
  const [csrfToken, setCsrfToken] = useState('');

  useEffect(() => {
    // 组件挂载时获取token
    const token = document.querySelector('meta[name="_csrf"]')?.getAttribute('content') || '';
    setCsrfToken(token);
  }, []);

  const handleSubmit = async () => {
    const res = await fetch('/api/submit', {
      method: 'POST',
      headers: {
        'X-CSRF-Token': csrfToken,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({/* 你的请求参数 */})
    });
  };

  return <button onClick={handleSubmit}>提交</button>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:45:02