Azure 中的 Django - CSRF_TRUSTED_ORIGINS 列表中现有 URL 的 CSRF 错误

问题描述 投票:0回答:1

在 Azure 中部署为 Web 应用程序,并添加我自定义购买的域名,我们将其称为“i-heart-java.com”。我将 URL 添加到 ALLOWED_HOSTS 和 CSRF_TRUSTED_ORIGINS 列表中,均为 https 和 http,包括额外的“www”。条目。应用程序在这些 URL 上成功拉起,并且我的页面在大多数情况下都可以正常工作,除非仅使用我的自定义域登录到应用程序的任何部分,否则登录可以使用天蓝色默认域正常工作。显示错误

2024-09-24T14:24:35.1649753Z Forbidden (Origin checking failed - https://www.i-heart-java.com does not match any trusted origins.): /admin/login/

我的设置如下,出于显而易见的原因,对真实姓名进行了清理:

ALLOWED_HOSTS = [
    'https://127.0.0.1:8000',
    '127.0.0.1',
    'https://i-heart-java-XXX.eastus-0X.azurewebsites.net/',
    "http://i-heart-java.com",
    'https://i-heart-java.com/',
    "http://www.i-heart-java.com",
    'https://www.i-heart-java.com/',
    ..others..,
]

SESSION_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = False
CORS_ALLOW_ALL_ORIGINS = True

CSRF_COOKIE_SECURE  = True
CSRF_COOKIE_HTTPONLY    = True
CSRF_USE_SESSIONS   = False
CSRF_COOKIE_SAMESITE    = 'Lax'

CSRF_TRUSTED_ORIGINS=[
    "https://i-heart-java.com",
    "http://i-heart-java.com",
    "https://www.i-heart-java.com",
    "http://www.i-heart-java.com",
    ..others..,
]

即使我的所有主机名和 URL 都位于正确的位置,但仅在通过自定义域登录时才可能导致 CSRF 触发?

会不会是自定义域名DNS? (请告诉我不)

我重新确认了 Azure Web 应用程序和我的域名托管服务商中的自定义域 DNS 设置。我还添加了我能想到的自定义域的各种 URL 格式。并且还尝试调整相关的CSRF和SSL设置

django azure csrf
1个回答
0
投票

您不需要

http://
条目,除非您专门通过
http
https
为网站提供服务。如果您使用
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
强制执行 HTTPS,请仅关注
https
版本。

更新ALLOWED_HOSTS

ALLOWED_HOSTS = [
    '127.0.0.1',
    'i-heart-java-XXX.eastus-0X.azurewebsites.net',
    'i-heart-java.com',
    'www.i-heart-java.com',
]
  • Django 最近的更改要求使用
    https://
    中的完整方案(例如,
    CSRF_TRUSTED_ORIGINS
    )。此外,如果需要,您必须包含子域的通配符。
CSRF_TRUSTED_ORIGINS = [
    "https://*.i-heart-java.com",  # Wildcard for any subdomains
]

参考:

© www.soinside.com 2019 - 2024. All rights reserved.