我正在尝试在本地服务器中运行 label-studio 并执行反向代理。但是,请关注网站https://labelstud.io/guide/start#Run-Label-Studio-with-HTTPS 我可以运行 label-studio,但在登录和登录时出现 CORS 错误。
[2024-02-04 16:07:29,509] [django.security.csrf::log_response::224] [WARNING] Forbidden (CSRF cookie not set.
要解决在使用 HTTPS 的反向代理后面运行 Label Studio 时出现的 CSRF cookie 未设置错误和 CORS 问题,您可以尝试以下步骤:
设置CSRF Cookie域: 确保在 Django 设置中正确设置 CSRF cookie 域。您可以将
CSRF_COOKIE_DOMAIN
设置为为您的 Label Studio 实例提供服务的域。如果 Label Studio 通过子路径提供服务,您可能还需要设置 CSRF_COOKIE_PATH
。
配置 CSRF 可信来源: 如果您的 Label Studio 由与主站点不同的域提供服务,您可能需要将该域添加到 Django 设置中的
CSRF_TRUSTED_ORIGINS
。
启用 CORS 标头: 确保您的反向代理配置为正确处理 CORS 请求。您可能需要将必要的 CORS 标头(例如
Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
和 Access-Control-Allow-Credentials
)添加到反向代理配置中。
设置安全 Cookie: 如果您通过 HTTPS 运行 Label Studio,请确保 Django 中的
SESSION_COOKIE_SECURE
和 CSRF_COOKIE_SECURE
设置设置为 True
以指示 cookie 只能通过安全连接传输。
检查反向代理配置: 验证您的反向代理是否已正确配置以将必要的标头传递到 Label Studio。例如,如果您使用的是 Nginx,则可能需要包含
proxy_set_header
指令来传递 Host
、X-Real-IP
、X-Forwarded-For
、X-Forwarded-Proto
和 X-Forwarded-Host
标头。
更新环境变量: 如果您在生产环境中部署 Label Studio,请将
SSRF_PROTECTION_ENABLED
环境变量设置为 true
以提高安全性。
设置
SECRET_KEY
:
确保 SECRET_KEY
环境变量设置为安全的随机值,并且在服务器重新启动时保持一致。该密钥用于提供加密签名,应保密。
检查浏览器控制台: 打开浏览器控制台以查找任何其他与 CORS 相关的错误,并确保 CORS 策略包含正确的来源。
回顾 Django 中间件: 确保
CsrfViewMiddleware
包含在 Django 设置中的 MIDDLEWARE
设置中。
检查混合内容: 如果您通过 HTTPS 提供 Label Studio,请确保所有资源也通过 HTTPS 提供,以避免混合内容问题。
如果您已尝试这些步骤但仍然遇到问题,请提供有关反向代理配置的更多详细信息以及来自 Label Studio 和反向代理的任何相关日志。这将有助于更准确地诊断问题。