Python socket 搭建的服务器如何返回 JSON 数据给到浏览器
用 Python socket 搭建的后端服务器,浏览器前端用 AJAX 访问这个服务器下的 xx.py,该怎么返回 JSON 数据给前端,方便前端获取 JSON 数据?
请知道的大神帮忙解惑,谢谢!
下面是代码:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(50)
while True:
data, addr = server.accept()
info = b'{"id":"test", "psw":"123"}'
buffer = data.recv(1024)
data.send("HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n"+info)
data.close()
问题已解决
在答友@Lin_R的提示下,自己尝试让 socket
以“http 报文响应头”+ JSON 格式内容返回给浏览器,能够正确拿到 JSON 数据。之前不能拿到是因为 AJAX 调用的 HTTP 主域名是本机域名(127.0.0.1),而服务器的域名地址是(192.168..),这就导致了“跨域问题”,浏览器不允许 AJAX 成功调用 JSON 的问题。PS:有兴趣可以查查“AJAX跨域”相关问题,希望能帮到跟我遇到同样问题的伙伴。
就此结疑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果后端是 socket,想要返回信息给前端,那你不能直接返回 json 数据,因为你需要构造 http 报文的响应头,然后再把 json 数据放进去,与其这样,还不如后端直接起个简易的 httpserver,这样就真的只需要处理 json 了
import json
xxx.send(json.dumps({'id': 'test'}).encode())
能放一下你的
Socket
完整代码吗