libwebsockets libwebsocket_client_connect параметр функции

Это подпись libwebsocket_client_connect().

struct libwebsocket * libwebsocket_client_connect (struct libwebsocket_context * context, const char * address, int port, int ssl_connection, const char * path, const char * host, const char * origin, const char * protocol, int ietf_version_or_minus_one)

И в этих параметрах я запутался, что такое host и origin.

в описании параметра написано

host : Hostname on server
origin : Socket origin name

Кажется, доменное имя или IP-адрес сервера и клиента каждый.

И только когда я ставлю 127.0.0.1 или локальный хост, он работает нормально (поскольку я тестировал в локальном хосте как веб-сервер, так и клиент)

Но если это так, я думаю, что функция уже имеет адресное поле для IP-адреса сервера или доменного имени, почему оно, вероятно, дублирует поле?


person SangminKim    schedule 27.11.2014    source источник


Ответы (1)


Хост http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

Поле заголовка запроса хоста указывает хост в Интернете и номер порта запрашиваемого ресурса, полученный из исходного URI, предоставленного пользователем или ссылающимся ресурсом (обычно URL-адрес HTTP).

Происхождение https://tools.ietf.org/html/rfc6454#section-7.2

При включении в HTTP-запрос поле заголовка Origin указывает
источник (источники), из-за которого пользовательский агент выдал запрос, как
определено API, который инициировал пользовательский агент для выдачи запроса
. /> запрос.

Хост является целью запроса, а источником является домен, в котором был создан клиент веб-сокета. Например, если у вас есть страница на example1.com, и эта страница открывает веб-сокет для example2.com, то example1.com будет источником, а example2.com — хостом.

person vtortola    schedule 27.11.2014
comment
Итак, в чем разница между адресом и хостом? я думаю они кажутся одинаковыми. - person SangminKim; 28.11.2014
comment
Адрес — это расположение сервера, host — переменная хостинга. Заголовок Host HTTP обязателен, но он может быть пустым. Вы можете подключиться к IP-адресу, а не к доменному имени, и по-прежнему передавать переменную хоста, чтобы указать, к какому приложению вы обращаетесь. Это нормальное поведение HTTP. Например, на сервере 1.1.1.1 могут размещаться сайты what.com и example.com, а также сервер 2.2.2.2, поскольку они являются частью веб-фермы, поэтому вы можете использовать 1.1.1.1 в качестве адреса, а сервер what.com в качестве хоста, чтобы указать, какой из них приложение, к которому вы обращаетесь. - person vtortola; 28.11.2014