一.遇到问题
跟着官方文档使用Django 测试工具Client时出现错误
在 python manage.py shell 环境下运行 response = client.get(‘/’)遇到报错
“Invalid HTTP_HOST header: ‘testserver’. You may need to add ‘testserver’ to ALLOWED_HOSTS”

二.问题分析
ALLOWED_HOSTS是一个字符串列表,代表了这个Django网站可以服务的主机名或域名。这是为了阻止HTTP Host头攻击而采用的一种安全措施,这种攻击即使在很多看上去很安全的服务器配置下依然能够成功。

这个列表中的值,可以是全名(比如: ‘www.example.com’), 在这种情况下,它们会直接与所要求的Host头进行匹配(大小写不区分,不包括端口号)。如果一个值以点号开始,则可当做一个子域名通配符:‘.example.com’会匹配’example.com’, ‘www.example.com’, 以及example.com的其它任意子域名。如果有’*'这个值,那么它会匹配任何字符串,在这种情况下,你就需要提供你自己的Host头验证机制(可能是在一个中间件中;如果真是这样,那么这个中间件就必须放在MIDDLEWARE列表的第一位)

Django也支持任一条目的域名全称。有一些浏览器在Host头中会包含一个结尾点号,Django在执行host验证时会过滤掉它。

如果Host头(如果启用了USE_X_FORWARDED_HOST,则是X-Forwarded-Host)不匹配列表中任何一个值,那么 django.http.HttpRequest.get_host()方法会抛出SuspiciousOperation异常。

当DEBUG设为True,且ALLOWED_HOSTS为空时,会使用**[‘localhost’, ‘127.0.0.1’, ‘[::1]’]**来验证Host头。

这个验证只会通过get_host()方法来执行,如果你的代码是通过request.META直接访问Host头,那么你就绕开了这一层安全保护。

三、解决问题

修改创建项目时生成的setting.py文件将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['*']再次运行即可成功访问。

注: 我是重新运行了 python manage.py runserver 再次运行shell才可以的

Invalid HTTP_HOST header: ‘testserver‘. You may need to add ‘testserver‘ to ALLOWED_HOSTS相关推荐

  1. Django运行项目时候出现DisallowedHost at / Invalid HTTP_HOST header:

    web端错误现象: DisallowedHost at / Invalid HTTP_HOST header: 'ip:8000'. You may need to add u'ip' to ALLO ...

  2. 解决Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS问题

    运行django程序后,通过浏览器访问服务器网址的8000端口,出现访问错误,报错如下 DisallowedHost at / Invalid HTTP_HOST header: 'xxx.xx.xx ...

  3. python 解决 Invalid HTTP_HOST header

    一.问题描述 在启动django的服务器,Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' t ...

  4. python的Web框架Django运行报错:Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx'

    python的Web框架Django运行报错:Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' ...

  5. Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS

    用python3 manage.py runserver 0.0.0.0:8000命令运行django程序后,通过浏览器访问服务器网址的8000端口,出现访问错误,报错为 Invalid HTTP_H ...

  6. Django运行报错Invalid HTTP_HOST header: ‘0.0.0.0:8000‘. You may need to add ‘0.0.0.0‘ to ALLOWED_HOSTS.

    用python manage.py runserver 0.0.0.0:8000命令运行django后,然后通过浏览器访问服务器网址运行的8000端口,出现访问错误报错. 报错为: 报错原因: 刚接触 ...

  7. Linux运行Django项目远程访问时报错:Invalid HTTP_HOST header: '***.***.*.*:8000'.

    需要设置Django项目下的setting.py文件: 改为: ALLOWED_HOSTS = ['*']

  8. 解决Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS!

    一.问题描述 在启动django的服务器时,报错如下图: 二.问题分析 三.解决问题 修改创建项目时生成的setting.py文件 将ALLOWED_HOSTS = []改为ALLOWED_HOSTS ...

  9. 解决Invalid HTTP_HOST header: ‘xxx.xx.xxx.xxx:8000‘. You may need to add ‘xxx.xx‘ to ALLOWED_HOSTS问题

    解决办法: 修改创建项目时生成的setting.py文件 将 ALLOWED_HOSTS = [] 改为 ALLOWED_HOSTS = ['*'] https://blog.csdn.net/wan ...

最新文章

  1. 英语很差,可能不会阻止你成为一名程序员,但一定会限制你成为一名“优秀的”程序员...
  2. 【转】【VC】VC程序运行时间测试函数
  3. python inspect模块
  4. makefile文件简要介绍
  5. Swift--变量和常量
  6. 如何设置WIN7自动登录(去除登录密码)
  7. ActiveMQ-为什么需要消息中间件及优缺点
  8. 测试开发之测试方法第一篇
  9. 利用python进行数据分析——第十四章_数据分析案例
  10. jQuery的鼠标事件总结
  11. css字体及css文本控制
  12. VM 14 CentOS 7.0虚拟机上网设置方法
  13. Altium Designer 18中查找元器件的四种方法
  14. 微信小程序独立服务器的好处,微信小程序的优势和缺点
  15. git+vimdiff 一次关闭所有文件
  16. 美洲豹超级计算机图片,中国超级计算机发展史_美洲豹超级计算机_神威蓝光超级计算机 济南(3)...
  17. 照片模糊怎么变清晰?
  18. linux mint ubuntu 16.06,Ubuntu和Linux Mint:安装Pinta 1.6工具
  19. 基于matab GUI的图形处理火焰检测系统
  20. 虚拟机Centos网络配置

热门文章

  1. teamviewer13绿色便携版
  2. html翻译插件,vscode系列: 做个五脏俱全的翻译插件
  3. 基于Redis实现查找附近的人
  4. Python超详细基础入门教程
  5. OverTheWire的bandit游戏1
  6. Remote Execution - SaltStack远程执行模块使用指南
  7. 互联网日报 | 2月26日 星期五 | B站月均活跃用户突破2亿;返利网借壳上市获批;理想汽车首次实现季度盈利...
  8. 鼠标事件 onmouseover、onmouseenter、onmouseleave和onmouseout
  9. odb++ DEMO
  10. 解决Win10任务栏图标消失