html5中的postMessage解决跨域问题

  解决跨域问题的方法有很多,如:图像ping(简单)、jsonp(缺点是不能实现跨域post)、CROS(CORS的本质让服务器通过新增响应头Access-Control-Allow-Origin,通过HTTP方式来实现资源共享,让每个请求的服务直接返回资源.它使用了HTTP交互方式来确定请求源是否有资格请求该资源,并且通过设置HTTP Header来控制访问资源的权限.缺点也是兼容性)。

  html5中的postMessage和onmessage可以方便的实现跨域post。写个例子,实现window与iframe的通信。

  

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<iframe src="http://taobao.com/1" style="display:none" id="taobao"></iframe>
	<script>
//现有代码如下:
		var json={};
		var winFrame=document.getElementById('taobao').contentWindow;
		winFrame.sendMessage(json,"http://taobao.com");

		window.addEventListener("message",hander,false);
		function hander (event) {
			document.getElementById('data').value=event.data;
		}
		/*
			//iframe zhong
			window.addeventListener("message",hander,false);
			window.parent.postMessage(data,"*")
		*/
	</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/dunken/p/4362762.html