Поделиться текущим html ответом (как есть) с пользовательским вводом без изменений - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь добиться чего-то похожего на share кнопку Go Playground.
При нажатии кнопки с именем share текущий ответ HTML сохраняется в файл. Это также включает в себя все, что может видеть пользователь.

Что я могу сделать до сих пор
- я могу успешно сохранить страницу HTML в файл.
- Я могу получить и сохранить целую страницу из URL, используя HTTP Get.

Предостережения
- я не могу сохранить текущую веб-страницу, над которой я работаю.

Это мой код для получения удаленных 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 Ответ

1 голос
/ 11 января 2020

Существует несколько способов сделать это при некотором сотрудничестве с клиентом.

Если вы хотите сохранить текущую веб-страницу так, как она отображается на клиенте (с текущими значениями формы, и т. Д. c.), Вы должны сделать это с Javascript на стороне клиента. Вы можете получить документ, сериализовать его в какой-либо форме и отправить на сервер для сохранения.

Альтернативой является создание страницы HTML на стороне сервера снова, но она не будет содержать введенных пользователем данных или каких-либо динамически сгенерированных HTML на стороне клиента.

Другой способ - использовать Javascript на стороне клиента для сбора состояния страницы, включая значения форм и данные, представляющие любой динамически генерируемый контент, отправлять его на сервер для сохранения и при необходимости восстанавливать страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...