libwebsockets libwebsocket_client_connect函数参数

libwebsockets libwebsocket_client_connect函数参数,c,websocket,libwebsockets,C,Websocket,Libwebsockets,这是libwebsocket\u client\u connect()的签名 在这些参数中,我不知道什么是host和origin 在对参数的描述中,它表示 host : Hostname on server origin : Socket origin name 它似乎是服务器和客户端各自的域名或IP地址 只有当我将127.0.0.1或localhost放在一起时,它才能正常工作(因为我在localhost中测试了websocket服务器和客户端) 但如果是这样的话,我认为这个函数已经有了服务

这是
libwebsocket\u client\u connect()
的签名

在这些参数中,我不知道什么是
host
origin

在对参数的描述中,它表示

host : Hostname on server
origin : Socket origin name
它似乎是服务器和客户端各自的域名或IP地址

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

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

主办 主机请求标头字段指定Internet主机和端口 从原始文件中获取的被请求资源的编号 用户或引用资源提供的URI(通常是HTTP URL)

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


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

那么地址和主机之间有什么不同?我认为它们看起来是一样的。地址是服务器的位置,主机是主机变量。主机HTTP头是必需的,但可以为空。您可以连接到IP地址而不是域名,并且仍然可以传递一个主机变量来指示您正在访问哪个应用程序。这是正常的HTTP行为。例如,服务器1.1.1.1可能托管“whater.com”和“example.com”,也可能托管2.2.2.2,因为它们是web场的一部分,所以您可以使用1.1.1.1作为地址,“whater.com”作为主机来指定您要访问的应用程序。
host : Hostname on server
origin : Socket origin name