可在 fetch 的 headers 中动态添加时间戳,推荐用 string(date.now()) 每次请求生成毫秒级字符串;封装 apifetch 函数自动注入更佳;需按后端要求选用秒级、iso 或带时区格式。

可以在 fetch 的 headers 选项中,用 JavaScript 动态生成时间戳(比如毫秒级时间戳),并作为自定义请求头字段传入。
使用 Date.now() 生成时间戳并添加到 headers
最常用的方式是调用 Date.now() 获取当前毫秒时间戳,然后赋值给某个自定义 header 字段(如 X-Timestamp 或 Timestamp):
- 确保 headers 是一个 plain object 或
Headers实例 - 时间戳建议用字符串形式传入(fetch 会自动转为字符串)
- 避免在 headers 对象字面量里直接写
Date.now()—— 它会在定义时执行一次,而不是每次请求都更新
✅ 正确写法(每次 fetch 调用都生成新时间戳):
fetch('/api/data', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Timestamp': String(Date.now()) // 每次调用 fetch 时动态计算
}
});
封装成可复用的请求函数
如果多个接口都需要这个时间戳,推荐封装一个基础请求函数,自动注入时间戳:
function apiFetch(url, options = {}) {
const headers = new Headers(options.headers || {});
headers.set('X-Timestamp', String(Date.now()));
return fetch(url, {
...options,
headers
});
}
// 使用示例
apiFetch('/user', { method: 'POST', body: JSON.stringify({}) });
这样既保证时间戳实时性,又避免重复代码。
注意服务端是否需要特定格式
有些后端要求时间戳是秒级(Math.floor(Date.now() / 1000))、ISO 格式(new Date().toISOString())或带时区的字符串。请根据 API 文档调整:
- 秒级时间戳:
Math.floor(Date.now() / 1000) - ISO 时间字符串:
new Date().toISOString() - 带时区的本地时间:
new Date().toLocaleString('zh-CN', { timeZoneName: 'short' })
务必和服务端约定好格式,否则校验可能失败。
避免缓存干扰(可选补充)
时间戳也常用来破除 GET 请求缓存。除了加 header,还可加 URL 参数:
const url = new URL('/api/status', window.location.origin);
url.searchParams.set('t', Date.now());
fetch(url).then(...);
但注意:header 方式更干净,适合鉴权或日志追踪;URL 参数更适合纯缓存控制。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











