django中allowed_hosts和cors_origin_regex_whitelist有什么区别?

时间:2017-03-08 09:15:31

标签: django gunicorn devops

这两个django设置有什么区别:

  • ALLOWED_HOSTS

  • CORS_ORIGIN_REGEX_WHITELIST

2 个答案:

答案 0 :(得分:3)

ALLOWED_HOSTS

  

表示此Django站点可以提供的主机/域名的字符串列表。这是一种防止HTTP主机头攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此

CORS_ORIGIN_REGEX_WHITELIST

这实际上是一个期望第三方包django-cors-headers的变量。所以当浏览器通过javascript向另一个域(跨域)启动请求时,浏览器将首先发送OPTIONS请求通过检查allowing标题来了解服务器是否Access-Control-Allow-Origin要接受请求的域。

注意

还有一些其他标题也使用此标题,如Access-Control-Allow-Headers等。

答案 1 :(得分:1)

文档所说的

ALLOWED_HOSTS

  

表示此Django的主机/域名的字符串列表   网站可以服务。

因此,如果ALLOWED_HOSTS = ['www.mysite.com', 'mysite.com']并且您尝试从浏览器访问blog.mysite.com,那么Django将无法提供此页面。您应该ALLOWED_HOSTS = ['www.mysite.com', 'mysite.com', 'blog.mysite.com']阅读与ALLOWED_HOSTS相关的文档。它们非常简单!

CORS_ORIGIN_REGEX_WHITELIST正如文档所述(再次):

  

与原始正则表达式原始主机名列表匹配的正则表列表   被授权进行跨站点HTTP请求。

当您拥有一个公开某些端点供客户端使用的API时,最常使用此设置。它允许浏览器对这些URL模式的请求。因此,如果CORS_ORIGIN_REGEX_WHITELIST = [r'images.mysite.com', ],那么<img src="http://images.mysite.com/image.jpg />"将成功加载,但如果<img src="http://big-images.mysite.com/image.jpg />"则会失败。

更多关于Mozilla MDN中的CORS。