如何响应龙卷风中的 GET 请求?
How to respond to a GET request in tornado?
刚开始学习HTTP,尝试做一个简单的客户端到服务器的请求在tornado中工作。这是我的 javascript 函数,通过单击按钮触发:
function funcOnClick(){
$.ajax({
url: "http://localhost:8889/madTest",
type: "GET",
success: function(result){alert('success')},
error: function(error){console.log(error)}
})
}
这是我的服务器:
import tornado.ioloop
import tornado.web
import json
class MainHandler(tornado.web.RequestHandler):
def get(self):
print('got the GET request')
self.write('abc')
def make_app():
return tornado.web.Application([
(r"/madTest", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8889)
print('server started, listening to 8889 ...')
tornado.ioloop.IOLoop.current().start()
单击按钮时,我看到打印了 "got the GET request",因此服务器一定已收到请求。但是,我在控制台上收到此错误:
有什么建议吗?谢谢!
当您的 JS 或 HTML 页面从不同的域提供服务并且您试图向不同的域发出 AJAX 请求时,会出现错误消息。这叫做CORS。出于安全原因,Web 浏览器限制 cross-domain AJAX 请求,除非服务器允许。
为了能够发出跨源 AJAX 请求,您需要在处理程序的响应中设置一个名为 Access-Control-Allow-Origin
的 header。
您可以在处理程序的 prepare
方法中执行此操作:
class MainHandler(...):
def prepare(self):
self.set_header('Access-Control-Allow-Origin', '*')
# the wildcard - '*' - allows CORS from any domain
# you should probably change it to your frontend
# domain name if you wan to restrict CORS to a single domain.
# see Mozilla docs for more info
刚开始学习HTTP,尝试做一个简单的客户端到服务器的请求在tornado中工作。这是我的 javascript 函数,通过单击按钮触发:
function funcOnClick(){
$.ajax({
url: "http://localhost:8889/madTest",
type: "GET",
success: function(result){alert('success')},
error: function(error){console.log(error)}
})
}
这是我的服务器:
import tornado.ioloop
import tornado.web
import json
class MainHandler(tornado.web.RequestHandler):
def get(self):
print('got the GET request')
self.write('abc')
def make_app():
return tornado.web.Application([
(r"/madTest", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8889)
print('server started, listening to 8889 ...')
tornado.ioloop.IOLoop.current().start()
单击按钮时,我看到打印了 "got the GET request",因此服务器一定已收到请求。但是,我在控制台上收到此错误:
有什么建议吗?谢谢!
当您的 JS 或 HTML 页面从不同的域提供服务并且您试图向不同的域发出 AJAX 请求时,会出现错误消息。这叫做CORS。出于安全原因,Web 浏览器限制 cross-domain AJAX 请求,除非服务器允许。
为了能够发出跨源 AJAX 请求,您需要在处理程序的响应中设置一个名为 Access-Control-Allow-Origin
的 header。
您可以在处理程序的 prepare
方法中执行此操作:
class MainHandler(...):
def prepare(self):
self.set_header('Access-Control-Allow-Origin', '*')
# the wildcard - '*' - allows CORS from any domain
# you should probably change it to your frontend
# domain name if you wan to restrict CORS to a single domain.
# see Mozilla docs for more info