Blocked a frame with origin "xxx" from accessing a cross-origin frame.

**Blocked a frame with origin "xxx" from accessing a cross-origin frame.**

  • 最近做一个统计问题,要在A服务器向B服务器的发起请求,获取数据显示,刚开始的时候方法和jsp页面都是写在B服务器上的,直接从A服务器发请求,弹出页面就可以了,,但是后来要求做到iframe里面,再向之前那么整就直接出现了跨域的问题,网上查了些资料,现在贴上自己的解决方法,,仅供参考:

最近做一个统计问题,要在A服务器向B服务器的发起请求,获取数据显示,刚开始的时候方法和jsp页面都是写在B服务器上的,直接从A服务器发请求,弹出页面就可以了,,但是后来要求做到iframe里面,再向之前那么整就直接出现了跨域的问题,网上查了些资料,现在贴上自己的解决方法,,仅供参考:

首先在A服务器新建的一个页面c.jsp,加载c.jsp的时候直接向B服务器发起了请求,

$(function () {
$(“head”).append("

showData是解析B服务器返回参数的方法的名字,,

在B服务器的请求中,把数据使用json的方法返回,

@RequestMapping(“itemReportJson”)
@ResponseBody
public void itemReportJson(String regId, String regName,HttpServletResponse response, HttpServletRequest request) throws Exception {
response.setHeader(“Access-Control-Allow-Origin”, “*”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html;charset=UTF-8”);
Map jsonMap = new HashMap<>();
List listDep =xxxx,,,你的方法
jsonMap.put(“listDep”, listDep);
String result = JsonUtil.toJson(jsonMap);
//前端传过来的回调函数名称
String callback = request.getParameter(“callback”);
//用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了
result = callback + “(” + result + “)”;
response.getWriter().write(result);

}

接受到参数后,,
A服务的jsp页面中

//回调函数
function showData(result) {
var itemNumHJ=0;
var webDoDepth1NumHj=0;
var webDoDepth2NumHj=0;
var webDoDepth3NumHj=0;
var depList=JSON.stringify(result.listDep);
var result = eval("(" + depList + “)”);
$.each(result, function(i,dom) {
itemNumHJ=itemNumHJ+dom.itemnum;
itemType1Num=itemType1Num+dom.itemType1Num;
itemType2Num=itemType2Num+dom.itemType2Num;
itemType3Num=itemType3Num+dom.itemType3Num;
//创建元素节点
var $jsp = $("" +
“”+(i+1)+"" +
“”+dom.itemType1Num+"" +
“”+dom.itemType2Num+"" +
“”+dom.itemType3Num+"" +
“”)
//插入元素节点:append
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲tbody").append(jsp)
});
}

你可能感兴趣的:(java,jsp)