问题背景
公司的项目是前后端分离,前端Vue+后端JavaSpringBoot为主,部分功能是PythonTornado,那么需要支持一个是跨域以及Options请求。
Option请求
只需要跟处理get一样处理options请求就可以了。vue一般需要访问options方法, 如果报错则很难继续,所以只要通过就行了,当然需要其他逻辑就自己控制。
1 安装
pip install tornado==4.3
2 跨域
# coding:utf-8
import tornado.web
import tornado.ioloop
class MyBaseHandler(tornado.web.RequestHandler):
#blog.csdn.net/moshowgame 解决跨域问题
def set_default_headers(self):
self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Headers', '*')
self.set_header('Access-Control-Max-Age', 1000)
#self.set_header('Content-type', 'application/json')
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
self.set_header('Access-Control-Allow-Headers',#'*')
'authorization, Authorization, Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, X-Requested-By, Access-Control-Allow-Methods')
class BaseHandler(tornado.web.RequestHandler):
# 这个方法需要修改一下才能用
def allowMyOrigin(self):
allow_list = [
'http://127.0.0.1:8080',
'http://192.168.1.5:8080',
]
if 'Origin' in self.request.headers:
Origin = self.request.headers['Origin']
# 域名
re_ret = re.match(r".{1,}\.(xixi.com|haha.com)", Origin)
# 内网和本地
re_ret2 = re.match(r"^(192.168.1.*|127.0.0.1.*|192.168.2.*)", Origin)
if re_ret or re_ret2 or Origin in allow_list:
self.set_header("Access-Control-Allow-Origin", Origin) # 这个地方可以写域名也可以是*
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
class IndexHandler(MyBaseHandler):
def get(self):
self.write("this is liuxueliang index!")
if __name__ == "__main__":
app = tornado.web.Application(
[(r"/", IndexHandler),],
cookie_secret = "2hcicVu+TqShDpfsjMWQLZ0Mkq5NPEWSk9fi0zsSt3A=",
xsrf_cookies = True
)
app.listen(8888)
tornado.ioloop.IOLoop.current().start()

https://www.jb51.net/article/183717.htm
567

被折叠的 条评论
为什么被折叠?



