小编典典

奇怪的JQuery错误“代码501,消息不支持的方法选项”

python

我正在学习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服务器。谁能帮我?


阅读 110

收藏
2020-12-20

共1个答案

小编典典

我要做的是编写自定义的 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)
2020-12-20