Django REST api 调用和 allowed_hosts
Django REST api calls and allowed_hosts
我正在尝试在 Django 中实现 RESTful API 这样任何 ip 都可以查询端点。但是,如果我设置 ALLOWED_HOSTS = ['*']
,我担心 header 攻击。
我阅读了对 的回答,其中建议应响应 api 调用,而不是由服务器响应。
我不完全理解他们的意思或如何实施它,正在寻求建议。
最终,我想知道如何进行 api 调用,因为它不在 ALLOWED_HOSTS 中,所以不会被 django 阻止?
ALLOWED_HOSTS 与您的 API 调用没有任何关系。这是您的服务器应该响应的主机名列表,而不是
您遇到的问题与 ALLOWED_HOSTS 无关,而与 CSRF 保护有关。你有两个选择。您可以使用
在页面上禁用跨站点请求伪造保护
@method_decorator(csrf_exempt, name=dispatch)
在 django >= 1.9 的 class 之上,或者在 django 的早期版本中装饰 dispatch 方法,例如:
class myView(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(myView, self).dispatch(request, *args, **kwargs)
如果您担心谁可以获得访问权限,则需要研究其他身份验证方法,例如基于令牌的身份验证,以便只有通过正确令牌的网站才能获得访问权限。
ALLOWED_HOSTS
是 strings
或 regular expressions
的列表,表示此 Django 站点可以提供的 host/domain 名称。
您需要使用 Token、JWT 或任何其他身份验证方法来阻止您的 API。
我正在尝试在 Django 中实现 RESTful API 这样任何 ip 都可以查询端点。但是,如果我设置 ALLOWED_HOSTS = ['*']
,我担心 header 攻击。
我阅读了对
我不完全理解他们的意思或如何实施它,正在寻求建议。
最终,我想知道如何进行 api 调用,因为它不在 ALLOWED_HOSTS 中,所以不会被 django 阻止?
ALLOWED_HOSTS 与您的 API 调用没有任何关系。这是您的服务器应该响应的主机名列表,而不是
您遇到的问题与 ALLOWED_HOSTS 无关,而与 CSRF 保护有关。你有两个选择。您可以使用
在页面上禁用跨站点请求伪造保护@method_decorator(csrf_exempt, name=dispatch)
在 django >= 1.9 的 class 之上,或者在 django 的早期版本中装饰 dispatch 方法,例如:
class myView(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(myView, self).dispatch(request, *args, **kwargs)
如果您担心谁可以获得访问权限,则需要研究其他身份验证方法,例如基于令牌的身份验证,以便只有通过正确令牌的网站才能获得访问权限。
ALLOWED_HOSTS
是 strings
或 regular expressions
的列表,表示此 Django 站点可以提供的 host/domain 名称。
您需要使用 Token、JWT 或任何其他身份验证方法来阻止您的 API。