Context
我正在运行一个Netbox示例,它使用Django。在它的参数中,我必须将CSRF_TRUSTED_ORIGINS
设置为我信任的源,以便Netbox正常工作。
我使用的Netbox示例在Docker容器(netbox-docker)中运行。
问题
我发现,如果我像文档中预期的那样将这些作为列表编写(请参阅此处),我会得到一个403错误,描述如下:CSRF verification failed. Request aborted.
激活调试模式还告诉我:Origin checking failed - https://myurl does not match any trusted origins.
,我不明白,因为我的变量看起来像这样:CSRF_TRUSTED_ORIGINS=['https://172.23.0.5', 'https://myurl']
。
临时解决方案
如果我将变量设置为一个简单的字符串,我不会得到任何错误:CSRF_TRUSTED_ORIGINS="https://myurl"
完美地适用于myurl
(当然,它仍然会阻止所有其他URL)。
问题(仍然)
这样做了一段时间,但现在我必须添加第二个域名引用我的Netbox示例,所以我需要将"https://myurl2"
添加到可信来源列表中。既然有一个列表在这里不起作用,我真的不知道如何继续下去。
我所尝试的
我试着改变我将它的值赋给变量的方式:
CSRF_TRUSTED_ORIGINS="https://myurl","https://myurl2"
CSRF_TRUSTED_ORIGINS="https://myurl" "https://myurl2"
这些语法只是给了我语法错误(例如,unexpected character "\"" in variable name
)。
TL;DR
我的Netbox(运行Django)只接受CSRF_TRUSTED_ORIGINS
变量作为字符串,而根据其文档,它应该接受一个列表。我需要设置多个受信任来源。
1条答案
按热度按时间erhoui1w1#
我已经找到解决办法了。这是netbox-docker实现中的问题。定义此参数的env文件实际上需要以下变量格式:
CSRF_TRUSTED_ORIGINS=https://myurl https://myurl2
(和我试过的一样,但没有引号)。