0

这是 的签名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)

在这些参数中,我对什么hostorigin是什么感到困惑。

在参数的描述中,它说

host : Hostname on server
origin : Socket origin name

似乎是服务器和客户端的域名或IP地址。

并且只有当我放置 127.0.0.1 或 localhost 时,它才能正常工作(因为我在 localhost 中测试了 websocket 服务器和客户端)

但如果是这样,我认为该函数已经有服务器 IP 或域名的地址字段,为什么它可能有重复的字段?

4

1 回答 1

2

主机http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

Host request-header 字段指定被请求资源的 Internet 主机和端口号,从用户或引用资源(通常是 HTTP URL)给出的原始 URI 获得。

来源https://www.rfc-editor.org/rfc/rfc6454#section-7.2

当包含在 HTTP 请求中时,Origin 标头字段指示
“导致”用户代理发出请求的来源,
由触发用户代理发出请求的 API 定义

主机是请求的目标,而源是创建 websocket 客户端的域。例如,如果您在 example1.com 上有一个页面,并且该页面打开了一个到 example2.com 的 websocket,那么 example1.com 将是源,example2.com 是主机。

于 2014-11-27T17:26:45.767 回答