前端webview,页面加载,发送Ajax请求,请求失败,https,http
2016-12-20 16:04
1671 查看
场景:
图文统计:要统计一篇图文推送到手机端的阅读量,我是在这个页面加上了一个Ajax请求,当页面加载的时候发送请求到后端,来统计阅读量,返回数量。
页面链接是经过Apach映射的。
在生产环境一直统计不到,Ajax请求没有发出来,后来发现是由于该页面是Https的,而其中发送的Ajax请求servlet的url是http的。
在火狐调试报错:"已阻止载入混合活动内容"
原理:
当一个HTTPS页面中包含HTTP内容时,即使主页面是经过SSL加密受HTTPS协议保护,但其中的HTTP内容可以被攻击者阅读或更改;这种HTTPS页面包含HTTP内容的情况,就被称为“混合内容”。
这种内容是不安全的,如果主页面是HTTPS,但iframe src引用HTTP内容,Firefox23默认会阻止这种内容的显式!
ps:但是安卓机有一台华为却能统计到的,其他安卓机统计不到,后来百度发现这台安卓机是Android4.4.4,而从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。所以这台安卓机可以统计到图文阅读量。
解决方式:
我把Ajax要请求servlet的url也改成了https的,就可以在手机端打开后成功发送ajax了,并能获取到返回的数据。
由于我的事一个简单页面,所以没用jquery,而是用的简单的原生ajax请求,轻量。
图文统计:要统计一篇图文推送到手机端的阅读量,我是在这个页面加上了一个Ajax请求,当页面加载的时候发送请求到后端,来统计阅读量,返回数量。
页面链接是经过Apach映射的。
在生产环境一直统计不到,Ajax请求没有发出来,后来发现是由于该页面是Https的,而其中发送的Ajax请求servlet的url是http的。
在火狐调试报错:"已阻止载入混合活动内容"
原理:
当一个HTTPS页面中包含HTTP内容时,即使主页面是经过SSL加密受HTTPS协议保护,但其中的HTTP内容可以被攻击者阅读或更改;这种HTTPS页面包含HTTP内容的情况,就被称为“混合内容”。
这种内容是不安全的,如果主页面是HTTPS,但iframe src引用HTTP内容,Firefox23默认会阻止这种内容的显式!
ps:但是安卓机有一台华为却能统计到的,其他安卓机统计不到,后来百度发现这台安卓机是Android4.4.4,而从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。所以这台安卓机可以统计到图文阅读量。
解决方式:
我把Ajax要请求servlet的url也改成了https的,就可以在手机端打开后成功发送ajax了,并能获取到返回的数据。
由于我的事一个简单页面,所以没用jquery,而是用的简单的原生ajax请求,轻量。
<script> window.onload = function(){ var messageIdElement = document.getElementById('file_messageId'); var messageId = messageIdElement.value; var user_agent = navigator.userAgent; var i = user_agent.indexOf('YSTUSERCODE'); var userCode = ''; if(i != -1){ userCode = user_agent.substring(i,user_agent.length); } var xmlHttp; if(window.ActiveXObject){ xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); } var url = 'msgTwTJurl?id='messageId'&userCode='userCode ; alert('url='url); xmlHttp.open('get',url,true); xmlHttp.send(); xmlHttp.onreadystatechange=function(){ if(this.readyState == 4){ if(this.status >=200 && this.status <400){ var readCount= this.responseText; var span = document.getElementById('readCount'); span.innerHTML=readCount; } } } }; </script>
相关文章推荐
- Android WebView加载服务端页面AJAX认证失败问题
- 解决Webview加载不了https请求中的http图片
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求 .
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求【转载】
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- android 5.0之后原生webview同时用https和http加载HTML不加载图片解决方案
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- 使用spring-web中的api发送http或https请求的代码
- 解决android 5.0 webview不能加载http与https混合内容的问题
- webView加载网页失败时的那个页面怎么替换掉,因为本身的页面很丑
- android 加载webview 自定义 失败页面
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- jqury+ajax每秒向后台发送请求数据然后返回页面(包括jqruy页面加载完毕才执行方法)
- 【Android】WebView加载https页面不能正常显示资源问题
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- webView加载不信任HTTPS页面
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- Android WebVIew 加载页面失败
- Xcode7 使用WebView loadRequest发送HTTP请求的问题