我试图从我们部门的内部网页面向不同部门的网络服务运行CORS网络请求,但我收到了错误消息。由于我对此很陌生,我无法确定原因是否是由于不同的协议造成的。
当尝试运行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文件,将事件处理程序附加到包含input
属性的所有必需class='contactLookUp'
元素。此文件仅在我们位于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开发都很陌生,所以我不确定我想做什么是可能的,但我相信以下可能是原因:
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
}
答案 0 :(得分:0)
您的网页尝试访问的端点需要支持CORS。如果不是,它将无法在飞行前检查时回复您的浏览器。虽然CORS只允许跨源请求,但它并不打算作为安全连接的一种方式。
您的浏览器(正确)拒绝访问该资源,因为https旨在成为安全连接,并且您尝试让浏览器连接到不安全的资源,从而打开安全漏洞。
当您将目标端点更改为https时,您将获得404,因为端点不会监听默认的https端口443(或根本不是)。
您可以检查Web服务是否正在侦听https的其他端口,尽管可能是一个很长的镜头。
您的另一个选择是构建充当代理的Web服务。然后,制作XMLHttpRequest的Web应用程序会向您的代理发出请求,而代理会向电话目录服务发出不安全的http请求,并将该结果返回给您的请求客户端(浏览器)。
基本上你需要建立一座桥梁。