我正在学习
JQuery Get方法.我启动了一个
Python HTTP服务器:
(只需输入命令“Python -m SimpleHTTPServer”).
只需在我的网络浏览器上访问“http:// localhost:80”就可以测试这个网络服务器.但是,当我写这个非常简单的JavaScript来访问我的网络服务器.我收到一条错误消息:
我使用jquery.xdomainajax.js库,假设跨域请求JQuery.
这是我的javascript代码:
<html> <head> <script src="jquery.min.js"></script> <script src="jquery.xdomainajax.js"></script> <script type="text/javascript"> $(document).ready(function(){ u = 'http://localhost:80'; jQuery.get(u,function(res){ $("#data").html(res.responseText) }); }); </script> </head> <body> <p id="data"></p> </body> </html>
实际上,如果我将您更改为任何其他网址,例如“http://www.google.ca”.它运作得很好.但我不知道为什么它不适用于基本的Python HTTP服务器.谁能帮我?
解决方法
我所做的是编写一个自定义的HTTPRequestHandler.我在MyHandler中添加了一个do-OPTIONS方法来告诉浏览器我的服务器支持CORS.这是通过发送标头Access-Control-Allow-Origin,Access-Control-Allow-Methods和Access-Control-Allow-Headers来完成的.另外,我在do_GET方法中添加了一个“self.send_header(‘Access-Control-Allow-Origin’,’*’)”语句.
class MyHandler(BaseHTTPRequestHandler): def do_OPTIONS(self): self.send_response(200,"ok") self.send_header('Access-Control-Allow-Origin','*') self.send_header('Access-Control-Allow-Methods','GET,POST,OPTIONS') self.send_header("Access-Control-Allow-Headers","X-Requested-With") def do_GET(self): self.send_response(200) self.send_header('Access-Control-Allow-Origin','*') self.send_header('Content-type','text/html') self.end_headers() self.wfile.write("<html><body>Hello world!</body></html>") self.connection.shutdown(1)