允许 CSRF_TRUSTED_ORIGIN django 中的所有 ips
Allow all ips in CSRF_TRUSTED_ORIGIN django
如何在 django 的 CSRF_TRUSTED_ORIGIN 中允许所有/任何 ips
后端 django restapi 是 运行,前端在一个系统上 angular,我们试图在另一个系统中使用系统 ip 访问,我能够访问前端,同时访问后端 POST 方法API 不工作它显示在 csrf 可信来源中找不到。
在 settings.py 我做了 get dynamic ips.
import socket
def get_ipaddress():
host_name = socket.gethostname()
ip_address = socket.gethostbyname(host_name)
return "http://"+ip_address+":4200"
ALLOWED_HOSTS=["*"]
CSRF_TRUSTED_ORIGINS=[get_ipaddress()]
尝试使用 csrf_excempt ,但它不起作用。
django4.0.1版本,
Angular16
对于 CSRF,您只需要 whitelist/allow 托管您的 angular 应用程序的服务器的 IP。当您使用 运行 angular 应用程序时,您应该将您在浏览器中访问 angular 应用程序的 url 列入白名单
例如:"http://localhost:4200"
或 http://192.168.1.1:4200
。或 https://whateveryourwebappurlis.com
.
这是您用来在浏览器中加载应用程序的 URL。您需要将其列入白名单。
CSRF_TRUSTED_ORIGINS=["http://localhost:4200", "https://whateveryourwebappis.com"]
</pre>
<p>确保您将此传递到 django 应用程序请求的来源 header。</p>
<p>阅读更多信息:<a href="https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins" rel="nofollow noreferrer">https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins</a></p>
<p>如果您尚未将方法和 header 列入白名单,请在您的设置中也这样做。</p>
<pre>CORS_ALLOW_ALL_ORIGINS=False
CSRF_TRUSTED_ORIGINS = [
"http://yourwhitelistedip.com",
]
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
socket.gethostbyname(host_name.local)
当在 get_ipaddress 中使用上述行时,它起作用了
如何在 django 的 CSRF_TRUSTED_ORIGIN 中允许所有/任何 ips 后端 django restapi 是 运行,前端在一个系统上 angular,我们试图在另一个系统中使用系统 ip 访问,我能够访问前端,同时访问后端 POST 方法API 不工作它显示在 csrf 可信来源中找不到。 在 settings.py 我做了 get dynamic ips.
import socket
def get_ipaddress():
host_name = socket.gethostname()
ip_address = socket.gethostbyname(host_name)
return "http://"+ip_address+":4200"
ALLOWED_HOSTS=["*"]
CSRF_TRUSTED_ORIGINS=[get_ipaddress()]
尝试使用 csrf_excempt ,但它不起作用。 django4.0.1版本, Angular16
对于 CSRF,您只需要 whitelist/allow 托管您的 angular 应用程序的服务器的 IP。当您使用 运行 angular 应用程序时,您应该将您在浏览器中访问 angular 应用程序的 url 列入白名单
例如:"http://localhost:4200"
或 http://192.168.1.1:4200
。或 https://whateveryourwebappurlis.com
.
这是您用来在浏览器中加载应用程序的 URL。您需要将其列入白名单。
CSRF_TRUSTED_ORIGINS=["http://localhost:4200", "https://whateveryourwebappis.com"]
</pre>
<p>确保您将此传递到 django 应用程序请求的来源 header。</p>
<p>阅读更多信息:<a href="https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins" rel="nofollow noreferrer">https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins</a></p>
<p>如果您尚未将方法和 header 列入白名单,请在您的设置中也这样做。</p>
<pre>CORS_ALLOW_ALL_ORIGINS=False
CSRF_TRUSTED_ORIGINS = [
"http://yourwhitelistedip.com",
]
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
socket.gethostbyname(host_name.local)
当在 get_ipaddress 中使用上述行时,它起作用了