2016-08-17 50 views
0

介紹

我試圖運行從我們部門的內部網的網頁,不同部門的Web服務的CORS網的要求,但我出錯。由於我對此很新,所以無法確定原因是否由於不同的協議。如何發送從一個安全的起點一個XMLHttpRequest到不安全的終點

錯誤

在嘗試,而Chrome的52提供了以下運行CORS請求IE11給Access is Denied

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,以便用戶可以輕鬆選擇所需的聯繫人。

頁面的URL

以下是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不受服務器啓用(由於服務器是我們部門的控制,我不想問,如果這是啓用或啓用此,除非我敢肯定的原因不是混合量)

我已經嘗試

  • 我已經嘗試終點改爲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

CORS需要由端點網頁試圖訪問的支持。如果不是,它將無法響應您的瀏覽器飛行前檢查。雖然CORS只允許交叉源請求,但並不是爲了解決安全連接問題。

您的瀏覽器(正確)拒絕訪問資源,因爲https旨在成爲安全連接,並且您試圖讓瀏覽器連接到不安全的資源,從而打開安全漏洞。

當您將您的目標端點更改爲https時,您會收到404,因爲端點沒有在默認的https端口443(或根本沒有)上偵聽。

您可以檢查Web服務是否在https的另一個端口上偵聽,儘管可能是一個長鏡頭。

另一種選擇是構建一個充當代理的Web服務。製作XMLHttpRequest的Web應用程序會向您的代理髮送請求,然後向電話目錄服務發送不安全的http請求,並將結果返回給您的請求客戶端(瀏覽器)。

本質上,你需要建立一個橋樑。

相關問題