我正在尝试实现类似于 Go Playgroundshare按钮的功能。单击调用share的按钮时,当前的 HTML 响应将保存到文件中。这还包括用户可以看到的所有内容。到目前为止我能做的 - 我可以成功地将 HTML 页面保存到文件中。- 我可以使用 HTTP Get 从 URL 获取并保存整个页面。注意事项- 我无法保存我正在处理的当前网页。到目前为止,这是我获取远程 URL 的代码:func HTTPGet(url string, timeout time.Duration) (content []byte, err error) { request, err := http.NewRequest("POST", url, nil) if err != nil { return } ctx, cancel_func := context.WithTimeout(context.Background(), timeout) request = request.WithContext(ctx) response, err := http.DefaultClient.Do(request) if err != nil { return } defer response.Body.Close() if response.StatusCode != 200 { cancel_func() return nil, fmt.Errorf("INVALID RESPONSE; status: %s", response.Status) } return ioutil.ReadAll(response.Body)}希望这不会涉及手动弄乱 DOM。
1 回答

慕桂英546537
TA贡献1848条经验 获得超10个赞
在客户的配合下,有几种方法可以做到这一点。
如果您想保存当前显示给客户端的网页(使用当前表单值等),您必须在客户端使用 Javascript 来执行此操作。您可以获取文档,以某种形式对其进行序列化,然后将其发送到服务器进行保存。
另一种方法是在服务器端再次生成 HTML 页面,但不包含用户输入的数据,或任何在客户端动态生成的 HTML。
另一种方法是在客户端使用 Javascript 收集页面状态,包括表单值和表示任何动态生成的内容的数据,将其发送到服务器进行保存,并根据需要重建页面。
- 1 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消