【发布时间】: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