2

我正在为我的公司编写一个基于Web的工具,它运行在本地Intranet上并在IE8中运行。我相信,既然公司的计算机处于国有企业,除了IT部门之外,没有人能够控制浏览器设置,他们也不可能做出任何更改,至少不是我们所需的时间范围。跨站点XmlHttp(XDomainRequest)

我有一个XmlHTTP请求到一个URL在“受信任的站点”(也在本地Intranet),但是当我发送请求时,我得到一个异常:“访问被拒绝”,当我赶上异常并输出到我的页面,我得到“TypeError:访问被拒绝”。

有没有什么办法可以让IE8完成这个AJAX请求?

编辑:经过进一步研究,事实证明,问题可能与可信站点/本地Intranet无关。显然你不能做跨域XmlHttp请求。我的系统是通过IP地址访问的,而我的AJAX脚本的目标站点是(仍然是本地的)域,它解析为不同的IP地址。不幸的是,我已经尝试编写一个PHP脚本,它将从服务器端获得页面,但是它也拒绝没有用户名/密码的连接。

在这个阶段,我接受任何有关如何解决这个问题的黑客建议。如果我可以使这个功能起作用,它将为我们节省手动输入数据的时间。

回答

2

由于IE8不支持CORS您必须执行代理或使用JSONP发出请求,或者将所有内容都放在相同的IP下。

+0

__Same Origin Policy__被引用到不同的域,协议和端口,而不是不同的IP;)。请参阅http://en.wikipedia.org/wiki/Same_origin_policy。不过,用于声明__JSONP__选项的+1,是目前独特的crossbrowser方法(几种浏览器具有可通过javascript处理的变量,以实现该功能,但不同)。 – diosney

+0

1)我不控制目标服务器的IP地址,不幸的是,2)服务器没有JSONP代码 - 我目前的代码下载了html内容,并找到了一个特定的元素来获取我需要的内容。 – Ozzah

+0

@Ozzah,听起来像你运气不好,除非你可以得到一个代理工作或与其他服务器一起工作,并让他们返回可以使用的内容。 :) – epascarello

0

是的,无论请求在同一台服务器上,你都不能进行跨域XmlHttp请求。 我不知道你想达到什么,但你不能用你列出的标签来做到这一点。

你应该考虑的一些节目。

您可以在任何需要的编程中创建一个小代理页面,并使这些XmlHttp请求抛出该代理。

+0

页面必须从客户端访问,服务器无法访问我试图抓取的页面。 – Ozzah

+0

总有办法做...研究你的选择 –