如何处理作为 url 参数发送到 django 的 csrf 凭据?
我问是因为,显然,the only way to submit a file upload via a form in an iFrame .
大多数在线示例显示将 csrf 凭据作为 header 传递,
xhr.setRequestHeader("X-CSRFToken", csrfToken );
但这不是 ie/opera 中 iFrame 传输的选项。
我可以使用csrf_exempt
,但这使我的网站容易受到攻击。
最佳答案
您可以创建一些中间件,从 GET 参数中获取 csrf_token
并将其放在请求上,然后 CsrfViewMiddleware
尝试验证
class CsrfGetParamMiddleware(object):
def process_request(self, request):
request.META['HTTP_X_CSRFTOKEN'] = request.GET.get('csrf_token')
return None
将此中间件放置在CsrfViewMiddleware
之上
MIDDLEWARE_CLASSES = (
'CsrfGetParamMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
这使您无需自行验证或子类化CsrfViewMiddleware
关于django - 将 CSRF 凭据作为 url 参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16339819/