我正在尝试加载 GWT Visualization Api 来绘制如下图表:
Runnable onLoadCallback = new Runnable() {
public void run() {
LineChart chart = new LineChart(createTable(), createOptions());
MyPage.this.add(chart);
}
};
VisualizationUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE);
这在本地运行时工作正常,但在应用程序服务器上, run() 永远不会被触发。我在浏览器控制台中收到以下错误:
Mixed Content: The page at 'https://mysite.myorg.com/mypage' was loaded over HTTPS, but requested an insecure script 'http://www.google.com/jsapi?callback=__gwt_AjaxLoader_onLoad'. This request has been blocked; the content must be served over HTTPS.
我在可视化文档中找不到任何内容来强制 VisualizationUtils 通过 HTTPS 加载 API。谁能帮我解决这个问题吗?
最佳答案
我使用相同的代码 (loadVisualizationApi
),它通过 https 加载,因此我没有看到任何错误。
这是 AjaxLoader 用于加载包的代码:
private static String getProtocol() {
if (Window.Location.getProtocol().equals("https:")) {
return "https:";
}
return "http:";
}
如您所见,它从进行调用的窗口中获取协议(protocol),因此无需在任何地方进行设置即可切换到 https。
检查您的 gwt-visualization jar 是否使用与上面相同的代码。如果是这样,请排除 Window.Location 选择错误协议(protocol)的原因。
关于java - 如何通过 HTTPS 加载 GWT 可视化 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27070663/