【问题标题】:How can I send an XMLHttpRequest from a Secure Start Point to an Insecure End Point如何将 XMLHttpRequest 从安全起点发送到不安全终点
【发布时间】:2016-12-23 23:53:30
【问题描述】:

简介

我正在尝试从我们部门的 Intranet 网页向其他部门的 Web 服务运行 CORS Web 请求,但出现错误。由于我对此很陌生,我无法确定原因是否是由于不同的协议。

错误

当尝试运行 CORS 请求时,IE11 提供 Access is Denied 而 Chrome 52 提供以下内容:

Mixed Content: The page at {MyPage} was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint {ServicePage}. This request has been blocked; the content must be served over HTTPS.`

意图

创建一个 JS 文件,将事件处理程序附加到所有必需的包含 class='contactLookUp' 属性的 input 元素。此文件将仅在我们位于 Intranet 上的部门页面上引用,这些页面大多数使用https 协议。在输入更改时,这会将XMLHttpRequest 发送到不同的端点,该端点仍在公司内部网内,但不在我们的部门控制范围内,并且使用http 协议。这将以 JSON 格式返回业务中的联系人,此时我将在页面中注入一些 HTML,以便用户可以轻松选择所需的联系人。

网页网址

以下是 Intranet 中的页面位置。 [name] 指的是公司名称,[Location1][Location2] 是不同的目录。

起点:

https://[name]01test.[name].abc/[Location1]/HTMLPage1.html

终点:

http://[name]intranet02.[name].abc/[Location2]/TelephoneDirectory/TelephoneDirectoryService.svc/GetPeople?term=[SearchTerm]

一些可能的原因

我对 CORS、jQuery 和 Web 开发还很陌生,所以我不确定我想做的事情是否可行,但我相信以下可能是原因:

  • 混合内容(Chrome 给出的错误让我认为这是原因)
  • 服务器未启用 CORS(由于服务器不受我们部门的控制,我不想询问 IT 是否已启用或启用此功能,除非我确定原因不是混合内容)

我的尝试

  • 我尝试将端点更改为https,但这会返回404 Page not Found 错误

脚本

var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {

    // Check if the XMLHttpRequest object has a "withCredentials" property.
    // "withCredentials" only exists on XMLHTTPRequest2 objects.
    xhr.open("GET", url, true); // <= Error here
}

【问题讨论】:

    标签: javascript html http xmlhttprequest cors


    【解决方案1】:

    您的网页尝试访问的端点需要支持 CORS。如果不是,它将无法响应您的浏览器飞行前检查。虽然 CORS 只允许跨源请求,但它并不是一种绕过安全连接的方法。

    您的浏览器(正确地)拒绝访问该资源,因为 https 旨在成为一种安全连接,而您正试图让浏览器连接到一个不安全的资源,这反过来又打开了一个安全漏洞。

    当您将目标端点更改为 https 时,您会收到 404,因为端点没有在默认的 https 端口 443(或根本没有)上侦听。

    您可以检查 Web 服务是否在不同的端口上侦听 https,尽管可能很长。

    您的另一个选择是构建一个充当代理的 Web 服务。然后,发出 XMLHttpRequest 的 Web 应用程序会向您的代理发出请求,而代理又会向电话目录服务发出不安全的 http 请求,并将结果返回给发出请求的客户端(浏览器)。

    基本上你需要建造一座桥梁。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2020-12-01
      • 2013-01-23
      • 2019-12-04
      • 2020-04-15
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2020-11-24
      相关资源
      最近更新 更多