libwebsockets libwebsocket_client_connect函数参数

时间:2014-11-27 16:52:18

标签: c websocket libwebsockets

这是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或域名的地址字段,为什么它可能有重复的字段?

1 个答案:

答案 0 :(得分:2)

  

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

     

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

     

起源https://tools.ietf.org/html/rfc6454#section-7.2

     

当包含在HTTP请求中时,Origin头字段指示
  “引起”用户代理发出请求的原因,如下   由API定义,触发用户代理发出
  请求。

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