【问题标题】:How to fix Missing CSRF token in sentry如何修复哨兵中缺少的 CSRF 令牌
【发布时间】:2020-11-09 17:23:00
【问题描述】:

在openshift上安装它时与哨兵战斗后,我启动并运行它只是发现当向我的服务器发送事件时会抛出这个错误:

12:30:59 [警告] django.request: Forbidden (CSRF cookie not set.): /api/1/envelope/ (status_code=403 request=) 10.125.2.1 - - [20/Jul/2020:12:30:59 +0000]“POST /api/1/envelope/HTTP/1.1”403 6059“-”“sentry.native/0.3.4”

如果我向 API 发送 curl 请求,我会得到一个显示 csrf 错误的简洁 HTML 网页。有人知道这可能是什么问题吗?

【问题讨论】:

  • 问题是服务器给你发送了一个cookie或一个令牌,而你没有使用它。或者类似的东西。
  • @user253751 mhm 这可能是真的,但根据这些文档,除了我的 DSN 之外,我不需要设置任何其他内容..docs.sentry.io/platforms/native

标签: c++ c django sentry


【解决方案1】:

您可以禁用 CSRF 中间件,或者如果您只想为此端点禁用它,您可以使用 @csrf_exempt 装饰器。

【讨论】:

  • 如何禁用它?
  • 进入settings.py文件,找到中间件列表,删除包含CSRF的那个;)
  • 遗憾的是,这是 docker 图像...我不知道在哪里可以找到 settings.py
【解决方案2】:

代理 /api/ 到哨兵中继工作者。相关部分来自https://github.com/getsentry/onpremise/blob/master/nginx/nginx.conf

upstream relay { server relay:3000; }
upstream sentry { server web:9000; }
server {
    location /api/store/ { proxy_pass http://relay; }
    location ~ ^/api/[1-9]\d*/ { proxy_pass http://relay; }
    location / { proxy_pass http://sentry; }
}

【讨论】:

  • 完成了所有这些,但仍然出现同样的错误。
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2017-01-08
  • 2021-10-23
  • 1970-01-01
  • 2021-11-23
  • 2013-12-02
相关资源
最近更新 更多