1.webA和webB两个项目
2.配置C:\WINDOWS\system32\drivers\etc\hosts文件,不然测试不了跨域访问的效果,添加一下代码到hosts文件中
#localhost 127.0.0.1 localhost 127.0.0.1 www.xxx.com 127.0.0.1 www.yyy.com
3.配置tomcat/server.xml文件,在server.xml中的<Engine></Engine>中添加一下代码
<Host name="www.xxx.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="webB" debug="0" reloadable="true" /> </Host> <Host name="www.yyy.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="webB" debug="0" reloadable="true" /> </Host>
4.编写webA和webB的测试代码
4.1.webA中的index.jsp页面,主要是测试,就没有做多少的逻辑代码了,呵呵.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>webA</title>
</head>
<script type="text/javascript" src="js/jquery-1.7.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btnC").click(function(){
$.ajax({
url:'http://www.yyy.com:8080/webA/index.jsp',
type:"POST",
data:"webBName=webB",
success: function (message) {
alert(message);
}
});
});
});
</script>
<body>
<button id="btnC">click</button>
</body>
</html>
4.2.webB中的index.jsp页面,
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
System.out.println(request.getParameter("webBName"));
response.setHeader("Access-Control-Allow-Origin","http://www.xxx.com:8080");
response.getWriter().write("hi,good morning");
%>
5.设置服务器的response的header参数,Access-Control-Allow-Origin
//表示只允许www.xxx.com:8080下的所有文件都可以访问,8080或不要加 / 啊,不然不行的
response.setHeader("Access-Control-Allow-Origin","http://www.xxx.com:8080");
//如果要允许所有,可以这样
response.setHeader("Access-Control-Allow-Origin","*");
//允许多个,网上都说用,号分隔,我怎么不对啊,谁知道还请指点啊。。?