xsrf form html,tornado开启了xsrf_cookies,在ckeditor中上传文件如何传入xsrf_form_html()?…

xsrf form html,tornado开启了xsrf_cookies,在ckeditor中上传文件如何传入xsrf_form_html()?…tornado在setting中设置了”xsrf_cookies”:True,则需要在表单中添加{%modulexsrf_form_html()%}。但ckeditor如何传xsrf_cookies这个值,每次上传图片都显示’_xsrf’argumentmissingfromPOST。如果把”xsrf_cookies”设置为False则上传成功。下面是上传的代码classcku…

大家好,又见面了,我是你们的朋友全栈君。

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’);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144488.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cubieboard刷机

    cubieboard刷机我用的是cubieboard2(在cubieboard内部是cubieboard20),而cubietrunk好像

    2022年7月22日
    6
  • ant安装教程

    ant安装教程                   ant安装教程一.安装ant1.点击http://ant.apache.org/bindownload.cgi进入ant官网,下载对应的安装包。2.将下载的.zip压缩包解压到对应文件夹二.配置环境变量右键点击“计算机–>属性–>高级系统设置–>高级–>环境变量”进入环境变量界面ANT_HOME…

    2022年7月25日
    13
  • 软件测试之因果图[通俗易懂]

    软件测试之因果图[通俗易懂]1.某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

    2022年8月14日
    2
  • 一文看懂半监督学习(Semi-supervised Learning)和自监督学习(Self-Supervised Learning)

    一文看懂半监督学习(Semi-supervised Learning)和自监督学习(Self-Supervised Learning)1.机器学习学习任务1.1监督学习根据输入-输出样本对L={(x1,y1),⋅⋅⋅,(xl,yl)}L=\{(x1,y1),···,(xl,yl)\}L={(x1,y1),⋅⋅⋅,(xl,yl)}学习输入到输出的映射f:X−>Yf:X->Yf:X−>Y,来预测测试样例的输出值。SL包括分类(Classification)和回归(Regression)两类任务,分类中的样例xi∈Rmx_i∈R^mxi​∈Rm(输入空间),类标签yi∈{c1,c2,⋅⋅⋅,cc}y_i∈\{c_1,c

    2022年9月13日
    0
  • PHP实现各种经典算法

    PHP实现各种经典算法

    2022年2月23日
    35
  • TCL语法_日语语法整理手写笔记

    TCL语法_日语语法整理手写笔记一、什么是TCLTcl全称是ToolcommandLanguage。它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握。Tcl语言是一个解释性语言,所谓解释性是指不象其

    2022年8月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号