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

如何使用weinre调试https加载的页面?,https,weinre,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 HT

我正在尝试使用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是不可能的,因为页面会传递敏感信息;通过http使用weinre是可以接受的,因为我通过ssh隧道连接


更新:我也尝试过使用boomarklet方法:我将bookmarklet URL添加到Chrome Mobile,但当我尝试导航到bookmarklet时,它似乎卸载了原始页面:我可以看到建立的连接,但当我查看资源时,我所看到的似乎是bookmarklet。但是如果我尝试通过typi运行bookmarklet在带星号的javascript代码出现在autocomplete中之前,它一直保留在当前页面上,但在客户端页面中没有显示目标。我认为这是出于相同的原因,因为我看到bookmarklet引用
http://localhost:2000

为了克服浏览器的限制,weinre页面可以通过https i提供服务n使用反向代理代替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
打开调试页面,并从调试下的页面运行bookmarklet。

问得好,回答得好,@Michael!我也有同样的问题,并按照您的指导让我的设置(Windows上的IIS)正常工作。我“我将此贴在这里作为参考,以防其他人遇到相同的问题

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

  • 首先,安装IIS扩展及其依赖项。这使得设置反向代理非常容易
  • 我为此创建了一个新网站,以避免与现有网站发生潜在冲突。在IIS管理器中,右键单击
    网站
    ,然后选择
    添加网站…
    。为其命名(例如“weinre”)并将其指向临时目录。将绑定更改为
    https
    ,然后选择未使用的端口,如8005。如果愿意,还可以添加
    http
    绑定
  • 选择新创建的站点,然后双击
    URL重写
    模块
  • 单击右侧面板中的添加规则,然后使用反向代理模板
  • 确保选中了
    启用SSL卸载
    框,然后输入weinre服务器所在的服务器名称/端口(例如,`127.0.0.1:8080')。添加规则,重新启动网站,就完成了
  • 现在,要使用它,只需更新目标脚本的路径,以指向在步骤2中绑定的端口。正如Michael指出的,您还需要设置
    window.WeinreServerURL
    ,因为它无法通过此设置自动检测

    调试愉快!

    您可以喜欢Heroku或Bluemix,它们通常提供https终止,因此应用程序基本上免费获得https支持


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

    Hi Dan,我已经尝试了您描述的方法,并且已经向IIS服务器添加了自签名SSL证书。我已经添加了一个名为weinre的站点,并且添加了到http:80和https:443的绑定。还添加了带有“启用SSL卸载”的反向代理复选框已选中。我已重新启动该站点,并且我的设置与http协议配合良好。问题是我无法使其在https下工作。我尝试将window.WeinreServerURL=“http://server:port/”(带和不带端口)设置为不走运。有什么想法吗?(我要测试的站点位于不同的域上)原来是因为自签名证书,导致浏览器出现安全异常。太棒了。您刚刚为我节省了数小时的工作时间,尝试通过HTTPS进行远程调试。@Dan我一直在尝试实现您的HTTPS解决方案,但我被卡住了。Weinre在注入bookmarklet的情况下可以很好地用于http。我有正确的IIS组件安装了ents,但有几个问题。您是否使用weinre站点的测试机IP地址(例如192.168.1.6)?您能分享第5步IIS设置的详细信息吗?您的输入是什么?您在哪里输入服务器:端口信息。有许多字段可供选择。您能提供相关的书签集代码吗?谢谢……如果您愿意,我可以打开另一个堆栈溢出问题。@Highdown,刚才看到了这个;在第5步中,重写规则使用“{R:1}”作为重写URL(带有include query string选项)。我已经有很长一段时间没有接触过它了,所以我的记忆很模糊。我使用ngrok.com解决了Weinre的https问题。更多信息请参阅本文中的
    窗口。WeinreServerURL
    可以运行whol