我正在尝试使用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
。
答案 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,我使用以下过程来设置反向代理:
Sites
并选择Add Web Site...
。给它一个名字(例如'weinre')并将它指向一个临时目录。将绑定更改为https
,然后选择未使用的端口,例如8005.如果您愿意,还可以添加http
绑定。URL Rewrite
模块。Add Rule(s)...
,然后使用Reverse Proxy
模板。Enable SSL Offloading
框,然后输入weinre服务器所在的服务器名称/端口(例如“127.0.0.1:8080”)。添加规则,重新启动网站,然后就完成了!现在,要使用它,只需更新目标脚本的路径以指向您在步骤2中绑定的端口。而且,正如迈克尔指出的那样,您还需要设置window.WeinreServerURL
,因为它可以用这种设置自动检测。
快乐调试!
答案 2 :(得分:3)
您可以{Her}或Bluemix run weinre on a PaaS通常提供https终止,因此应用程序基本上可以免费获得https支持。
您可以在此处尝试https版本的公共访问weinre服务器:https://weinre.mybluemix.net/