如何从服务端语言(如 Go)设置浏览器 localStorage?

星辰吖_4140

星辰吖_4140

2026-01-22

654人浏览

原创

如何从服务端语言(如 Go)设置浏览器 localStorage?

localstorage 是纯客户端 api,无法通过服务端代码直接写入,服务器只能借助响应内容向浏览器发送 javascript 脚本,在页面加载时由浏览器执行并写入 localstorage。

localStorage 是浏览器提供的 Web Storage API 的一部分,其生命周期和作用域完全限定在客户端(即用户浏览器中),由 JavaScript 运行时环境(如 V8、SpiderMonkey)管理。与 Cookie 不同,它不参与 HTTP 请求/响应流程:服务器无法通过响应头(如 Set-Cookie)或任何内置函数(如 Go 的 http.SetCookie)直接操作 localStorage —— 因为它根本不存在于服务端上下文,也不暴露给 HTTP 协议。

✅ 正确实现方式:服务端「注入」可执行的前端逻辑
你可以在服务端渲染 HTML 响应时,将初始化数据嵌入 <script> &#26631;&#31614;&#20013;&#65292;&#30001;&#27983;&#35272;&#22120;&#22312;&#39029;&#38754;&#21152;&#36733;&#26102;&#33258;&#21160;&#25191;&#34892;&#65306;</script>

func handler(w http.ResponseWriter, r *http.Request) {
    data := map[string]string{
        "userId": "12345",
        "theme":  "dark",
    }

    // 序列化为 JSON 字符串(注意转义,防止 XSS)
    jsonData, _ := json.Marshal(data)

    tmpl := `


<title>Init localStorage</title><script>
    try {
      const data = JSON.parse(%s);
      Object.keys(data).forEach(key => {
        localStorage.setItem(key, data[key]);
      });
      console.log("localStorage initialized from server");
    } catch (e) {
      console.error("Failed to set localStorage:", e);
    }
  </script>`

    fmt.Fprintf(w, tmpl, string(jsonData))
}

⚠️ 注意事项:

cn-json-diff
cn-json-diff

比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。

下载
  • 安全性优先:务必对嵌入的 JSON 数据进行严格转义(如使用 html.EscapeString 或模板引擎的自动转义功能),避免脚本注入(XSS);推荐使用 html/template 而非 text/template,并调用 .EscapeJS 方法。
  • 时机限制:该方式仅适用于服务端渲染(SSR)场景;若为纯 API 服务(如返回 JSON 的 REST 接口),则必须由前端 JS 主动发起请求后自行调用 localStorage.setItem()。
  • 替代方案考量:若需服务端强管控持久化状态,应优先考虑 Cookie(带 HttpOnly/Secure 标志)、服务端 Session,或结合 JWT + 客户端存储的混合方案。

总结:localStorage 的设计哲学是“客户端自治”,服务端无法绕过浏览器安全模型直接写入。所谓“服务端设置 localStorage”,本质是服务端生成并交付一段可信的客户端执行逻辑 —— 这不是后端能力的延伸,而是前后端协作的约定模式。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2255

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3642

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1216

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

4199

7

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

2023.06.30

12599

10

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.23

1286

5

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

864

5

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1946

14

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

580

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习