【发布时间】:2020-03-23 21:23:29
【问题描述】:
这个问题实际上可能无法描述我的问题。 所以我有一个主机A。我想在html页面中使用js发送一个带有有效负载的请求。目的地是另一个主机 B。主机 B 在另一个网络上,我希望它接收来自 A 的请求。我不知道该怎么做。 我尝试设置一个简单的 python 服务器来打印请求:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((localhost, PORT)) ## localhost: 127.0.0.1 and random port
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
data = ""
while True:
data += conn.recv(2048)
if not data:
break
print(data)
我觉得这是非常错误的。无论如何,在 A 上,我尝试使用 fetch api 发送 get 请求:
fetch(`http://${public_ip_of_B}:${port_of_B}/${payload}`)
请求保持挂起状态并引发错误。
那么如何将请求从 A 发送到 B? 提前致谢
【问题讨论】:
-
fetch()使用 HTTP 协议,不能只发送原始数据。 -
Python 代码需要发回格式正确的 HTTP 响应。
-
WebSockets 适用于浏览器和服务器之间的长期连接,它们在其中来回发送信息并可以保持连接状态。我们将它用作我们的游戏应用程序。
-
你不应该绑定到
localhost。这将只允许来自同一台机器的请求,而不是远程客户端。 -
@EyePatch: “我以为我可以收到字符串“GET HTTP1.1...”。” - 你可以。但是您只会在客户端关闭连接后打印您收到的内容,并且客户端只会在服务器在发送响应后关闭连接后关闭连接,但您的服务器甚至不会开始读取响应,因为它仍在从客户端读取.请阅读实际的 HTTP 标准,而不是(错误地)事后猜测它是如何工作的。
标签: javascript python sockets request