Получить RAW заголовок http ответа в golang - PullRequest
0 голосов
/ 08 января 2019

Как получить необработанный заголовок ответа в виде строки:

alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
cache-control: private, max-age=0
content-encoding: br
content-type: text/html; charset=UTF-8
date: Tue, 08 Jan 2019 06:19:47 GMT
expires: -1
server: gws
set-cookie: 1P_JAR=2019-01-08-06; expires=Thu, 07-Feb-2019 06:19:47 GMT; path=/; domain=.google.com
set-cookie: SIDCC=ABtHo-HHNcja-cEEFEUXtBmLOdql4RTVMCWKGApEFFb8lWSAqaTF_fi0gDLoWaCzH3ogvEofah0; expires=Mon, 08-Apr-2019 06:19:47 GMT; path=/; domain=.google.com; priority=high
status: 200

Потому что я хочу получить кратное значение set-cookie из заголовка ответа. Используйте Http.Response.Header.Get("set-cookies"), просто верните последний ряд.

Или как мне получить несколько файлов cookie?

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Стандартный http lib по умолчанию анализирует заголовок.
Использование fasthttp (вам потребуется переписать функции маршрутизатора и обработчика) даст вам возможность получить необработанный заголовок.

0 голосов
/ 08 января 2019

Если вам нужны заголовки raw , вам нужно написать некоторую оболочку для net.Conn, которая захватывает необработанный заголовок, прежде чем он будет интерпретирован библиотекой http.

Но вам, похоже, не нужен необработанный заголовок - или даже полный заголовок вообще. Если ваша цель - просто прочитать несколько файлов cookie, самый простой способ сделать это с помощью метода Cookies в ответе.

Промежуточным вариантом между этими двумя является чтение всего поля ответа Header. Это представит заголовок full , но его порядок не гарантируется, и будет проведен минимальный анализ (для удаления новых строк и т. Д.), Поэтому нельзя сказать, что это действительно «необработанный». Однако он сохраняет несколько значений, в случае дублирования заголовков, сохраняя все значения заголовка в []string. Поэтому для целей этого вопроса этого должно быть вполне достаточно (хотя Response.Cookies, как упоминалось выше, будет проще).

0 голосов
/ 08 января 2019

использование fmt.Printf("%+v", resp.Header)

может записать весь заголовок в строку, как показано ниже:

map[Set-Cookie:[CASPRIVACY=""; Path=/ CASTGC=TGT-1248283-0BRja0uNQR9PntBl4HnrzKA44q5XDQXxA5FRVcnO9Xn6CkTU6S-passport; Path=/ CASLOGC=%7B%22myuniRole%22%3A0%2C%22username%22%3A%22a6051b9d08384f3ea2d203e744d3f7e6%22%2C%22mycuRole%22%3A0%2C%22userId%22%3A192676671%2C%22myinstRole%22%3A0%2C%22realName%22%3A%22%E9%9B%B7%E7%BA%A2%E6%A2%85%22%2C%22uuid%22%3A%22V4eoYpNB%22%2C%22headPic%22%3A%22http%3A%2F%2Fimage.xxx.com%2Fzhs%2Fapp%2Fcontent%2F201812%2Ff0b20d740df04d3196a20bc39f58ab56_s3.png%22%7D; Domain=.xxxx.com; Path=/ SERVERID=958b97eacbe3c49360ace2dfc0bd31b4|1546915535|1546915533;Path=/] Pragma:[no-cache] Expires:[Thu, 01 Jan 1970 00:00:00 GMT] Cache-Control:[no-cache no-store] Location:[http://online.xxx.com/onlineSchool/?ticket=ST-3285248-UiTbNt7bnUwXdtWSznIT-passport.xxxx.com] Date:[Tue, 08 Jan 2019 02:45:35 GMT] Content-Length:[0] Connection:[keep-alive]]

Едва ли получить все куки из строки, используя split и regx

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