笔记:使用 Charles 配合 webpack-dev-server 遇到的 host check 问题


标题中提到的 Charles 在这里,比较习惯利用它的代理功能配合 Safari inspector 和 Chrome 的 remote device 进行前端界面的真机测试、调试。


问题

想把一个功能抽象出来、做一个本地小测试,很顺手地用 webpackwebpack-dev-server 在本地搭建,一如既往的配合 Charles 想在手机上测试,跑了 npm run serve 之后习惯地在 iPhone 的 Safari 里输入了 localhost.charlesproxy.com:3333,没想到是页面全白,只有一句话「invalide host header」,惊呆 😱。


解决

最后翻到了几个 Github 上 issue 和其他社区的帖子:这里这里还有这里。最后参考 v2.4.3 的 release note

  • We added a check for the correct Host header to the webpack-dev-server. This allowed evil websites to access your assets.
  • The Host header of the request have to match the listening adress or the host provided in the public option.
  • Make sure to provide correct values here

大概的意思是,打了一个安全更新,以后需要把 需要访问的 hostname 写入到配置文件写、或者 CLI 启动时用 flag 的方式传入,比如我的情况就是 webpack-dev-server --public localhost.charlesproxy.com


解决方式一:

和上文提到一致,在启动 webpack-dev-server 的时候在 CLI 启动的时候的传入 --public,我在移动端测试使用的 hostname 是 Charles 提供的 localhost.charlesproxy.com,那么省去别的 flag 就是这么写:


解决方式二:

参考 issue 中的这个回答webpack-dev-server 有一个全局禁用 host 检查的配置:

感谢阅读

你们好, 2018 年初把小站从 Jekyll 迁移到 Hugo 的过程中,删除了评论区放的 Disqus 插件,考虑有二:首先无论评论、还是对笔记内容的进一步讨论,读者们更喜欢通过邮件、或者 Twitter 私信的方式来沟通;其次一年多以来 Disqus 后台能看到几乎都是垃圾留言(spam),所以这里直接贴一下邮件、以及 Twitter 账户 地址。

技术发展迭代很快,所以这些笔记内容也有类似新闻的时效性,不免有过时、或者错误的地方,欢迎指正 ^_^。

BEST
Lien(A.K.A 胡椒)
本站总访问量 本站总访客量 本文总阅读量