我正在学习
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)