- 主题:ajax 如何向服务器传输长参数?
我以为 get for read and post for write
【 在 blyw (勇往直前) 的大作中提到: 】
: 写错了。
: 为什么post不是正常做法?
--
FROM 116.247.85.*
Django的csrf中间件是对所有post请求做跨站请求过滤.正常的做法就是在Form里面加csrftoken tag,这个tag的实际做的事情是加了hidden的input.所以你从cookie里面取csrftoken值往post请求里面加参数的做法和框架本身做的事情一样。看你用的是jquery,其实jquery的参数可以对form整体做序列化,那样的话,直接用csrf tag就ok了。
当然有简单的做法,就是把那个view直接用免csrf装饰器注解了,那个view就不再作csrf过滤了.这个不推荐,就像你用get请求模仿数据修改请求一样,以上两者都不推荐,为什么,很简单,如果是UGC站点,对方编辑的时候加一个img链接,基本上你的JS代码能做的事情,它都能做.当然你要真的做CSRF,前提是XSS必须得做好,如果说你连XSS都防不了,CSRF的工作就是摆设。
【 在 wuhaochi 的大作中提到: 】
: 也成。
: 就是我是在 django's rest_framework下用,对于认证不太会,看代码后把crsftoken这个cookie value加到post的 data当中一块传给服务器,解决了认证。但这估计不是正确做法。
: 要是能 get,就最好了
: ...................
--
修改:dhcn FROM 125.33.76.*
FROM 125.33.76.*
非常感谢。查了一下,终于明白了。
【 在 dhcn 的大作中提到: 】
: Django的csrf中间件是对所有post请求做跨站请求过滤.正常的做法就是在Form里面加csrftoken tag,这个tag的实际做的事情是加了hidden的input.所以你从cookie里面取csrftoken值往post请求里面加参数的做法和框架本身做的事情一样。看你用的是jquery,其实jquery的参数可以对form整体做序列化,那样的话,直接用csrf tag就ok了。
: 当然有简单的做法,就是把那个view直接用免csrf装饰器注解了,那个view就不再作csrf过滤了.这个不推荐,就像你用get请求模仿数据修改请求一样,以上两者都不推荐,为什么,很简单,如果是UGC站点,对方编辑的时候加一个img链接,基本上你的JS代码能做的事情,它都能做.当然你要真的做CSRF,前提是XSS必须得做好,如果说你连XSS都防不了,CSRF的工作就是摆设。
--
FROM 112.65.211.*