关于跨域传输的问题
最近在写一个小项目,碰到了一个跨域传输的问题,百度了很多,还没有解决。这个项目是在linux上运行的..
先是运行了一个shellinabox服务,用的是4200端口,在这里面我获取的一个数据要传到8080端口项目中请求action去处理。
shellinabox里是js部分获取到的数据,下面是关键代码:
ShellInABox.prototype.sendRequest = function(request) {
if (request == undefined) {
request = new XMLHttpRequest();
}
request.open('POST', this.url + '?', true);
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded; charset=utf-8');
var content = 'width=' + this.terminalWidth +
'&height=' + this.terminalHeight +
(this.session ? '&session=' +
encodeURIComponent(this.session) : '&rooturl='+
encodeURIComponent(this.rooturl));
request.setRequestHeader('Content-Length', content.length);
request.onreadystatechange = function(shellInABox) {
return function() { try {
return shellInABox.onReadyStateChange(request);
} catch (e) {
shellInABox.sessionClosed();
}
try {
return shellInABox.onReadyStateChange(request);
} catch (e) {
shellInABox.sessionClosed();
}
}
}(this);
request.send(content);
};
ShellInABox.prototype.onReadyStateChange = function(request) {
if (request.readyState == 4 /* XHR_LOADED */) {
if (request.status == 200) {
this.connected = true;
var response = eval('(' + request.responseText + ')');
if (response.data) {
this.vt100(response.data);
}
if (!response.session ||
this.session && this.session != response.session) {
shellInABox.sessionClosed();
} else {
this.session = response.session;
this.sendRequest(request);
}
} else if (request.status == 0) {
// Time Out
this.sendRequest(request);
} else {
shellInABox.sessionClosed();
}
}
};
本来我是想发ajax的,但是发ajax的话
try {
return shellInABox.onReadyStateChange(request);
} catch (e) {
shellInABox.sessionClosed();
}
这个地方会catch异常,然后关闭了session.
后来又试了一下window.name跨域,取出来的依旧为空,后来又想了一下,这种方法应该不行,因为我打开4200端口的网页,就开启了一个会话,如果为改了url,不管最后url改没改回来,之前的会话都结束了。
if (response.data) {
this.vt100(response.data);
}
想问问各位大神,有没有什么办法将response.data这个数据传给8080端口的action,需要异步,获取一个就传过去一个处理