如何使用weinre调试https加载的页面?

时间:2013-12-16 23:55:14

标签: https weinre

我正在尝试使用weinre进行调试,并在Chrome中设置了一个简单的测试,以确保一切正常。但是,在开发人员工具中我收到错误:

"The page at 'https://myhost/...' was loaded over HTTPS, but ran insecure content from 'http://localhost:8080/target/target-script-min.js': this content should also be loaded over HTTPS.

关于调试“Cordova”或“Phonegap”,我看到了其他一些答案。我没有使用这些东西中的任何一个,建议的答案似乎不适用于此。我正在尝试调试简单的HTML / Javascript。

我在weinre网页上没有看到启用https支持的任何提及(它明确提到它不使用https),而且我对浏览器端没有很多控制权(这需要在各种各样的Android浏览器上工作,无论如何,在我看来,对本地调试完全不友好,这实际上是我试图使用weinre调试的原因,所以我不知道如何继续。由于页面传递敏感信息,因此不使用https是不可能的;使用weinre over http是可以接受的,因为我通过ssh隧道连接。

更新:我还尝试使用boomarklet方法:我将书签网址添加到Chrome Mobile,但是当我尝试导航到书签时,它似乎卸载了原始页面:我可以看到连接,但是当我看看资源,我看到的只是书签。但是,如果我尝试通过键入书签的名称来运行书签,直到标记的javascript代码出现在自动完成中,它将保留在当前页面上,但客户端页面中不会显示任何目标。我认为这是出于同样的原因,因为我看到书签引用了http://localhost:2000

3 个答案:

答案 0 :(得分:8)

要获得浏览器限制,我们可以使用反向代理从https而不是http来提供页面。这有点像一个暴力解决方案,但在我的/etc/httpd.conf文件的末尾添加以下行足以代理我们从服务器请求的所有页面:在我的情况下,这些都不会与现有文件冲突或目录。

ProxyPass       /target/  http://localhost:8080/target/
ProxyPassReverse          /target/  http://localhost:8080/target/
ProxyPass       /client/  http://localhost:8080/client/
ProxyPassReverse          /client/  http://localhost:8080/client/
ProxyPass       /weinre/  http://localhost:8080/weinre/
ProxyPassReverse          /weinre/  http://localhost:8080/weinre/
ProxyPass       /interfaces/  http://localhost:8080/interfaces/
ProxyPassReverse          /interfaces/  http://localhost:8080/interfaces/
ProxyPass       /modjewel.js  http://localhost:8080/modjewel.js
ProxyPass       /images/  http://localhost:8080/images/
ProxyPassReverse          /images/  http://localhost:8080/images/
ProxyPass       /ws/  http://localhost:8080/ws/
ProxyPassReverse          /ws/  http://localhost:8080/ws/

还需要定义window.WeinreServerURL,因为Weinre在http:/上执行正则表达式以尝试获取服务器的URL。这将失败,因为服务器是https而不是http。在我的例子中,我将以下形式的声明添加到bookmarklet作为函数中的第一个语句:

window.WeinreServerURL="https://server:port/

有了这个,我就可以将我的浏览器指向https://server:port/client/#anonymous以显示调试页面,并在调试页面下运行书签。

答案 1 :(得分:3)

很棒的问答,@迈克尔!我有同样的问题,并按照您的指导使用我的设置,即Windows上的IIS。我在这里发布这个作为参考,以防其他人遇到同样的问题。

使用IIS,我使用以下过程来设置反向代理:

  1. 首先,安装IIS的Application Request Routing扩展名及其依赖项。这使得设置反向代理非常容易。
  2. 我为此创建了一个新网站,以避免与我现有网站的潜在冲突。在IIS管理器中,右键单击Sites并选择Add Web Site...。给它一个名字(例如'weinre')并将它指向一个临时目录。将绑定更改为https,然后选择未使用的端口,例如8005.如果您愿意,还可以添加http绑定。
  3. 选择新创建的网站,然后双击URL Rewrite模块。
  4. 点击右侧面板中的Add Rule(s)...,然后使用Reverse Proxy模板。
  5. 确保选中Enable SSL Offloading框,然后输入weinre服务器所在的服务器名称/端口(例如“127.0.0.1:8080”)。添加规则,重新启动网站,然后就完成了!
  6. 现在,要使用它,只需更新目标脚本的路径以指向您在步骤2中绑定的端口。而且,正如迈克尔指出的那样,您还需要设置window.WeinreServerURL,因为它可以用这种设置自动检测。

    快乐调试!

答案 2 :(得分:3)

您可以{Her}或Bluemix run weinre on a PaaS通常提供https终止,因此应用程序基本上可以免费获得https支持。

您可以在此处尝试https版本的公共访问weinre服务器:https://weinre.mybluemix.net/