tornado开启了xsrf_cookies,在ckeditor中上传文件如何传入xsrf_form_html()?
tornado在setting中设置了"xsrf_cookies" : True,则需要在表单中添加{% module xsrf_form_html() %}。
但ckeditor如何传xsrf_cookies这个值,每次上传图片都显示'_xsrf' argument missing from POST。
如果把"xsrf_cookies"设置为False则上传成功。
下面是上传的代码
class ckuploadHandeler(BaseHandler):
@authenticated
def gen_rnd_filename(self):
filename_prefix = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
return '%s%s' % (filename_prefix, str(random.randrange(1000, 10000)))
@authenticated
def post(self):
"""CKEditor file upload"""
error = ''
url = ''
callback = self.get_argument("CKEditorFuncNum")
if self.request.method == 'POST' and 'upload' in self.request.files:
fileobj = self.request.files['upload']
fname, fext = os.path.splitext(fileobj[0]['filename'])
rnd_name = '%s%s' % (self.gen_rnd_filename(), fext)
filepath = os.path.join(self.settings['static_path'], 'upload', rnd_name)
# 检查路径是否存在,不存在则创建
dirname = os.path.dirname(filepath)
if not os.path.exists(dirname):
try:
os.makedirs(dirname)
except:
error = 'ERROR_CREATE_DIR'
elif not os.access(dirname, os.W_OK):
error = 'ERROR_DIR_NOT_WRITEABLE'
if not error:
print(filepath)
with open(filepath,'wb') as up: #有些文件需要已二进制的形式存储,实际中可以更改
up.write(fileobj[0]['body'])
urlpath = filename='%s/%s' % ('upload', rnd_name)
url = self.static_url(urlpath)
print(url)
else:
error = 'post error'
res = """
window.parent.CKEDITOR.tools.callFunction(%s, '%s', '%s');
""" % (callback, url, error)
self.write(res)
Handler的URL (r'/upload/', ckuploadHandeler),
显示错误`WARNING:tornado.general:403 POST /upload/?CKEditor=context&CKEditorFuncNum=1&langCode=zh (127.0.0.1): '_xsrf' argument missing from POST
`
如何在上传图片的时候把xsrf_cookies也post过去?
html代码:
CKEDITOR.replace('context');
相关阅读:
哪位技术大神用过金斧子APP,首页效果就是一个列表,往上推列表慢慢变大
idea coding git 403
如果网站带宽接近饱和,服务器有很多用户连接,会不会拖垮网站?
js如何一个页面多个上传而不被覆盖的问题?
如何用正则把连续出现用.连接的单词的第一个替换掉?
php获取不到$_FILES) 如图 高手求教。
css规范,关于浮动有9点说明,其中第4点不太理解,求解释
为什么borderColor要使用CGColor而不能使用UIColor
问一个qq互联登录的问题:一个开发者账号下的多应用之间统一用户
html 页面字数过多 要去判断行数
display:table 单元格变形问题
Java下Socket通讯 发送数据后如何获知何时收到Ack
浏览器JS环境中,如何异步使用原生confirm?
C# 调用cdo.message发送邮件的问题
Math.random 究竟含义为何?
为什么iphone4s 下载新版本项目,下载下来却为旧版本?
在vc6.0的dll工程中导入别人的cpp和hpp文件,编译后有语法错误
一个JQ问题,左右移动问题
OpenSuSE13.2 编译安装 tsocks-1.8 出错(saveme.c)
微信JSSDK 关于安全域名