猿问

与完整的用户输入共享当前的 html 响应(原样)

我正在尝试实现类似于 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。


鸿蒙传说
浏览 148回答 1
1回答

慕桂英546537

在客户的配合下,有几种方法可以做到这一点。如果您想保存当前显示给客户端的网页(使用当前表单值等),您必须在客户端使用 Javascript 来执行此操作。您可以获取文档,以某种形式对其进行序列化,然后将其发送到服务器进行保存。另一种方法是在服务器端再次生成 HTML 页面,但不包含用户输入的数据,或任何在客户端动态生成的 HTML。另一种方法是在客户端使用 Javascript 收集页面状态,包括表单值和表示任何动态生成的内容的数据,将其发送到服务器进行保存,并根据需要重建页面。
随时随地看视频慕课网APP

相关分类

Go
我要回答