我正在学习JQuery Get方法。我启动一个Python HTTP服务器:
(只需输入命令“ Python -m SimpleHTTPServer ”)。
只需在Web浏览器上访问“ http:// localhost:80”即可测试此Web服务器。但是,当我编写此非常简单的JavaScript来访问我的网络服务器时。我收到一条错误消息:
“代码501,消息不支持的方法(’OPTIONS’)”
我使用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>
实际上,如果我将u更改为其他任何网址,例如“ 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)