关于跨域传输的问题

qq359655471 2016-05-22 08:13:58
最近在写一个小项目,碰到了一个跨域传输的问题,百度了很多,还没有解决。这个项目是在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,需要异步,获取一个就传过去一个处理
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2016-05-23
  • 打赏
  • 举报
回复
跨域用jsonp
Go 旅城通票 2016-05-23
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
jsonp试试 如果只考虑高版本浏览器试试ajax2 或者document.domain试试
++数据改为jsonp的,如果使用的是webkit核心如chrome或者firefox,可以设置 Access-Control-Allow-Origin响应头
似梦飞花 2016-05-23
  • 打赏
  • 举报
回复
jsonp试试 如果只考虑高版本浏览器试试ajax2 或者document.domain试试

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧