【问题标题】:Cross-Site XmlHttp (XDomainRequest)跨站 XmlHttp (XDomainRequest)
【发布时间】:2023-03-03 14:33:01
【问题描述】:

我正在为我的公司编写一个基于 Web 的工具,它在本地 Intranet 上运行并在 IE8 中运行。我相信由于公司的计算机在国有企业中,除了 IT 部门之外,没有人可以控制浏览器设置,他们不太可能做出任何更改,至少不会在我们需要的时间范围内进行。

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

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

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

在这个阶段,我愿意接受任何关于如何解决这个问题的骇人听闻的建议。如果我能让这个功能发挥作用,它将节省我们手动输入数据的时间。

【问题讨论】:

    标签: javascript ajax internet-explorer internet-explorer-8 xdomainrequest


    【解决方案1】:

    由于 IE8 不支持 CORS,您要么必须做代理,要么使用 JSONP 发出请求,或者获取同一 IP 下的所有内容。

    【讨论】:

    • 同源策略指的是不同的域、协议和端口,而不是不同的 IP ;) 。见en.wikipedia.org/wiki/Same_origin_policy。但是,+1 表示 JSONP 选项,目前是唯一的跨浏览器方式来执行此操作(一些浏览器具有受保护的变量,可以通过 javascript 操作来完成此操作,但有所不同)。
    • 1) 不幸的是,我不控制目标服务器的 IP,并且 2) 服务器没有 JSONP 代码 - 我目前拥有的代码下载 html 内容并找到要获取的特定元素我需要什么。
    • @Ozzah,听起来你很不走运,除非你可以让代理工作或与其他服务器一起工作并让他们返回你可以使用的内容。 :)
    • 这个答案不正确 - IE8 绝对支持跨域资源共享规范。它在 XMLHttpRequest 中不支持,但 CORS 是一个独立的标准,可以应用于任何事物。 IE8 和 IE9 在 XDomainRequest 中支持 CORS。当然不太理想,但仍然是(大部分)有效的实现。
    【解决方案2】:

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

    您应该考虑一些编程。

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

    【讨论】:

    • 该页面必须从客户端访问,服务器无法访问我要抓取的页面。
    • 总有办法做到这一点......研究你的选择
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2011-06-11
    • 2013-09-14
    相关资源
    最近更新 更多