81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
#!/usr/bin/python
|
||
# encoding:utf-8
|
||
|
||
from curses import nocbreak
|
||
import sys
|
||
|
||
from tornado import gen
|
||
from tornado.web import RequestHandler
|
||
from tornado.escape import json_decode, json_encode, utf8
|
||
import json, simplejson
|
||
|
||
|
||
class BaseHandler(RequestHandler):
|
||
"""解决JS跨域请求问题"""
|
||
|
||
def set_default_headers(self):
|
||
# 设置允许请求的方法
|
||
self.set_header('Access-Control-Allow-Methods', 'POST, DELETE, PUT, GET, OPTIONS')
|
||
|
||
# Tornado获取请求'origin'的方法
|
||
origin = self.request.headers.get('Origin', '')
|
||
|
||
# 设置允许的'origin',只设置'*'时某些特定情况下会失败故最好优先获取请求的域加入允许组中
|
||
self.set_header('Access-Control-Allow-Origin', origin or "*")
|
||
|
||
# 设置是否允许客户端携带证书式访问。通过对 Credentials 参数的设置,就可以保持跨域 Ajax 时的 Cookie
|
||
self.set_header('Access-Control-Allow-Credentials', 'true')
|
||
|
||
self.set_header('Access-Control-Allow-Headers', '*')
|
||
|
||
self.set_header("Access-Control-Max-Age", 1000)
|
||
self.set_header("Content-type", "application/json")
|
||
|
||
# vue一般需要访问options方法, 如果报错则很难继续,所以只要通过就行了,当然需要其他逻辑就自己控制。因为vue访问时,会先执行一次预加载,直接放过就好了
|
||
def options(self):
|
||
# 返回方法1
|
||
self.set_status(204) # 这里的状态码一定要设置200,建议
|
||
self.finish()
|
||
|
||
def get_post_data(self, *params):
|
||
post_data = self.request.body_arguments
|
||
post_data = {x: post_data.get(x)[0].decode("utf-8") for x in post_data.keys()}
|
||
if not post_data:
|
||
post_data = self.request.body.decode('utf-8')
|
||
post_data = simplejson.loads(post_data)
|
||
|
||
print("post_data", post_data)
|
||
|
||
valus = {}
|
||
msg = ''
|
||
for key in params:
|
||
if key in post_data:
|
||
valus[key] = post_data[key]
|
||
else:
|
||
msg = key + ' not found'
|
||
break
|
||
|
||
return msg, valus
|
||
|
||
def get_get_data(self, *params):
|
||
valus = {}
|
||
msg = ''
|
||
for key in params:
|
||
value = self.get_argument(key, None)
|
||
if value != None:
|
||
valus[key] = value
|
||
else:
|
||
msg = key + ' not found'
|
||
break
|
||
|
||
return msg, valus
|
||
|
||
def error(self, code, msg):
|
||
result = {
|
||
'status': False,
|
||
'code': code,
|
||
'msg': msg
|
||
}
|
||
self.write(json_encode(result))
|
||
|