AJAX跨域跨端口访问的问题

tangdinghua2008 2007-11-27 09:33:55
我现在要访问一个不同域的不同端口的服务器。使它们之间建立连接,是不是不行??
...全文
1634 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2007-11-29
  • 打赏
  • 举报
回复
你的jsp服务器是tomcat吗?

如果是我也不知道怎么设置tomcat.......

你可以去jsp版块去问问怎么设置才不会出现这种问题
tangdinghua2008 2007-11-28
  • 打赏
  • 举报
回复
没人回答.我现在用服务器端脚本来写..JS还是有太多的限制了..
tangdinghua2008 2007-11-28
  • 打赏
  • 举报
回复
我现在正在做一个WEB版IM,

只有我在浏览器这样输入的情况下才会运行正常 http://localhost:8080/project/index.jsp

只要我把localhost改成127.0.0.1就不行了...


有没有人帮忙解决..大家一起提高..
tangdinghua2008 2007-11-28
  • 打赏
  • 举报
回复
而且以前曾经搜索过一些关于跨域资料..

我见到上面谈论FF的时候.他并不支持跨域操作.我不知道这观点对吗?
tangdinghua2008 2007-11-28
  • 打赏
  • 举报
回复
还有人在吗帮我解决问题啊???


其实现在最严重的问题就是跨域传输数据的问题.


或者你们曾经有谁做过WEBIM的..更好啊..
tangdinghua2008 2007-11-28
  • 打赏
  • 举报
回复
其实我今天在做得时候.我就知道了.呵呵.

我也想所有浏览器都有支持.


我想请问一下..JS通过AJAX访问其它域的机器,是否还要经过WEB服务器才行??

tantaiyizu 2007-11-27
  • 打赏
  • 举报
回复

呵呵 ,是你功夫未练到家罢了
何必找什么资料让我看呢

首先你要理解什么是域?
你所理解的跨域又指的是什么呢?

Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
下面这片文章自己参考

AJAX跨域问题解决办法

ajax伴随的goole 的推动,越来越多的站点开始使用了,在开大ajax程序的时候会遇到很多的问题,主要有以下几个方面:

1.跨浏览器问题
2.历史后退状态问题


3.跨域问题

跨浏览器的问题因为现在有很多的开元的框架已经解决了,我们无需为此而烦恼。

历史后退状态问题我们可以使用一个数组来保存历史纪录,然后把这些数据村到历史对象中去,中的也可以解决,并且还有很多的开元框架给与支持,这样问题就不是很大。

跨域的问题就不是很好的解决,但是还是有办法的,一下给出一些基本的解决方案供大家选择:

1.使用代理,你可以使用web端的程序编写代理程序,把所有的ajax请求的数据进行转发,web程序可以使php,jsp,asp等所有的编程语言。相信大家对这种方式一定很熟悉,这里就不详细的介绍了。
2.使用iframe的方式来定势的刷新叶面,这种方式只是取得数据来显示,并不能真正的和求得的数据进行交互,转化成本页面的动态数据,不是很可取,应用也不是很多,我也忽略不去讨论了。
3.使用apache的代理功能,主要就是apache的方向代理,或者是url从定向,你也可以把其他的站点直接的挂在自己的网站上,这样的方式可能会友邦权的问题,多的九部介绍了,有兴趣的本有可以自己实践以下。
4.使用《script》标签的方式,这样的话就可以保正使用真正的ajax来跨域,并且可以使用返回来的数据,发誓很简单,在我们的后台程序处理后的到的结果都直接的用javascript 的方式返回,在我们的html中直接的使用返回数据的变量就可以了一个简单的例子
我们使用的html叶面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript" src="" id="get">
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function get(url)
{
var obj = document.getElementById("get");
obj.src = url;
(obj.readStatus == 200)
{
alert(xml);
}
}
function text()
{
get (get.php);
}
//-->
</SCRIPT>
<BODY>
<INPUT TYPE="button" value="CLICK ME" onclick="test()">
</BODY>
/HTML>

后台程序

get.php
eche 'var xml ="asdf";';
当你点击按钮的时候就会去服务器那去你需要的js,但加在完成后就可以自己的使用变量xml了,运行代码后你会得到一个对话框显示asdf;
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
看你基本的ajax概念都搞不清楚

由于安全方面,ajax是不能跨域的好不好,汗.........
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
ajax能访问不同域的页面???????

我看你2楼才瞎说
非凡笨笨 2007-11-27
  • 打赏
  • 举报
回复
我没试过这种跨域是否能够成功,不过在ext框架中是提供了方法的~~
tantaiyizu 2007-11-27
  • 打赏
  • 举报
回复

不明白楼上在说些什么?

怎么就不可以请求了?
完全可以直接请求 ,搭建什么代理 ,纯扯淡
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
使用ajax直接访问这个服务器是不可能的
你可以搭建代理服务器
,就是在ajax同一个域名下新建立一个服务器页面,用这个服务器页面访问远程的服务器获取信息后返回给ajax对象,ajax对象访问这个服务器页面获取信息就行了.
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
你给的这个页面没说

ActiveXObject 可以跨域取数据啊???

只是说ie7下面端口不同时算不算跨域


你去baidu看看,没有一个结果说能跨域啊,

http://www.baidu.com/s?tn=max2_cb&ie=gb2312&bs=ajax+ActiveXObject+%BF%E7%D3%F2&sr=&z=&cl=3&f=8&wd=ajax++%BF%E7%D3%F2&ct=0

解决办法就下面几种

在网上提到的方法,不外乎这几种:

1. 如果要获取的数据位于同一个根域但是不同子域时,可以在脚本中指定document.domain为父域。

2. 如果要获取的数据位于不同的根域时,则可以在服务器上写一个脚本作为代理,由服务器上的脚本获取不同域的数据,然后传递给在同一个域中的网页。

3.借用Script的src动态属性,因为src对域没有任何限制,但这种方法的缺点是服务器返回只能是javascript代码,这样的缺陷也就限制了异域名必需是可控的。

下面之中是最新发现的,修改dns记录
我们知道,域名只不过是为了便于人们记忆ip而设立的一个助记符而已,而浏览器判断跨域也只是判断是否在一个子域内,我们完全可以自己定一个dns记录,把一个子域名指向倒我们需要的服务器ip上去。换句话说,我们可以使用一个域名,访问多个服务器。

例如:

我有一个域名是boolean.net.cn,它指向的ip是:69.89.31.51,而我想访问yahoo.com上的数据,我完全可以新建一个dns记录,指向yahoo.com的ip。我通过ping www.yahoo.com.cn获得ip地址为202.165.102.205,在自己的dns记录中新建一个dns记录yahoo,指向他的ip为 202.165.102.205,这样,我访问http://yahoo.boolean.net.cn就相当于访问yahoo网站一样了,这样的话,问题就被转移到同一个子域下的数据获取了。

关于同一个子域下的数据交换,大家可以参考http://www.lhelper.org/tech/communicate_between_domains.html中的解决办法,在这里我就不多说了。

参考页面

1. http://blog.csdn.net/conis/archive/2007/08/05/1726736.aspx

2. http://www.lhelper.org/tech/communicate_between_domains.html
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
如果使用ActiveXObject能跨域取数据,但是ajax设计的时候是不能跨域的

我个人觉得还是按标准的方法来解决比较合理,除非你所有的用户使用的都是ie浏览器,要不使用ff或者其他的浏览器不能使用ActiveXObject,只能使用XMLHttpRequest来创建对象的时候你怎么办?

除非你不需要这部分用户了.
tangdinghua2008 2007-11-27
  • 打赏
  • 举报
回复
http://www.7kill.com/simple/t32022.html


我就是通过这里找到。不知道。是不是看错了。。


原话是这样描述的:“看来只要是标准的 XHR 内置对象, 都只支持同一域同一端口下的AJAX访问。。。
不同端口将被限制。只有通过 ACTIVEX 创建的 XHR 对象限制才没这么死。。。至少不同端口
下是正常的。。。 :(”
tangdinghua2008 2007-11-27
  • 打赏
  • 举报
回复
我不知道这是不是就是它的不安全性。。
tangdinghua2008 2007-11-27
  • 打赏
  • 举报
回复
我这里用了就行了。。。直接用ACTIVEOBJECT创建就行了。。。
Go 旅城通票 2007-11-27
  • 打赏
  • 举报
回复
ie的ActiveXObject??

没用过ActiveXObject的跨域,看来自己还真没学到家,汗........

有谁用过ActiveXObject跨域取过数据??我也想看看.........

<<ajax高级程序设计>>我看过,没说ajax能跨域取数据,微软的ActiveXObject就不知道了........
tangdinghua2008 2007-11-27
  • 打赏
  • 举报
回复
有人知道吗。。
加载更多回复(2)

52,797

社区成员

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

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