【问题标题】:HTTP_REFERER not in request.META, how to set it?HTTP_REFERER 不在 request.META 中,如何设置?
【发布时间】:2021-09-20 11:15:19
【问题描述】:

我正在尝试为我的 Django 视图修复 csrf 保护。 CsrfViewMiddleware检查是否有referer如下:

referer = request.META.get('HTTP_REFERER')
if referer is None:
    return self._reject(request, REASON_NO_REFERER)

我正在尝试在标头中设置“HTTP_REFERER”:

const config = {
  headers : {
    "Referer": "https://example.com/",
    "HTTP_REFERER": "https://example.com/",
    "Referrer-Policy": "strict-origin-when-cross-origin"
  }
}

const fetcherGraphql = (query) => request(serverURl + "/graphql", query, config);

Django 因REASON_NO_REFERER 而失败,因为request.META 中没有HTTP_REFERER

我怎么把它弄进去?还是我错过了什么?

【问题讨论】:

    标签: django csrf


    【解决方案1】:

    试试这个,让我知道它是否有效。

    delete window.document.referrer;
    window.document.__defineGetter__('referrer', function () {
        return "yoururl.com";
    });
    

    【讨论】:

    • 这里的window.document是什么?我找不到这些。我正在使用graphql-request 拨打电话
    • 这是一个 javascript 属性。只需在发送请求之前将其添加到您的 js 文件中,让我知道它是否有效。
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多