嗨哟,
我已经设置了一个带有 GET 请求的 Python 服务器,该请求似乎可以工作,但由于某种原因,我无法将任何内容发送回请求客户端,该客户端是用 Javascript 编码的。
蟒蛇服务器:
import time
import BaseHTTPServer
HOST_NAME = 'localhost'
PORT_NUMBER = 8000
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
def do_GET(s):
print "here i am, in python" #this prints, so i know i'm in here
"""Respond to a GET request."""
s.send_response(200)
s.send_header("Content-type", "application/json")
s.send_header("Access-Control-Allow-Origin", "*")
s.send_header("Access-Control-Expose-Headers", "Access-Control-Allow-Origin")
s.send_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
s.end_headers()
s.wfile.write("test1")
return "test2"
# If someone went to "http://something.somewhere.net/foo/bar/",
# then s.path equals "/foo/bar/".
s.wfile.write("<p>You accessed path: %s</p>" % s.path)
s.wfile.write("</body></html>")
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
Javascript客户端:
$.ajax({
method: "GET",
url: "http://localhost:8000",
success:function(result){
console.log("success"); //does not print
console.log(result); //does not print
},
failure:function(err){
console.log("couldn't make it"); //does not print
}
});
所以我想要的是从 JS 向 Py 发送一个 GET 请求,并从服务器获得一些反馈。唉,除了 之外什么都没有打印"here i am, in python"
,这表明我在服务器的 GET 代码中,但没有任何东西被发回。
有任何想法吗?
谢谢!
更新
好的,在根据 eton 的建议进行调整后,我从成功功能中获得了“成功”打印。
该result
参数也正在打印,但是,它是空的。
do_GET 现在看起来像这样:
def do_GET(s):
print "here i am, in python"
# """Respond to a GET request."""
s.send_response(200)
s.wfile.write("test1")
s.send_header("Content-type", "text/html")
# s.send_header("Content-type", "application/json")
s.send_header("Access-Control-Allow-Origin", "*")
s.send_header("Access-Control-Expose-Headers", "Access-Control-Allow-Origin")
s.send_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
s.end_headers()
也许我退回错了?我不知道。一直在阅读文档和其他帖子,但到目前为止无济于事。
再次感谢