0

我發現了幾個類似的線程。但是,似乎還沒有任何工作。Internet Explorer跨域:不發送預檢

問題

在我們當前的生態系統,我們已經有了三個服務器爲我們的http的API。兩個用於測試,一個用於生產。

最近我們已經發布了使用AngularJS的客戶端Web應用程序。由於客戶端應用程序是爲我們的客戶提供的,因此與我們api的溝通是跨域的。這些網絡應用程序可以在Chrome,safari和firefox中正常運行。但是,對於第三個API Internet Explorer(11)拒絕發送預檢(選項)請求,該請求禁用客戶端與api進行通信。在另外兩個apis中,web應用程序在IE中運行良好。

API的將是以下幾點:

https://api.doma.in/accesstoken -- Works in IE11 
https://api2.doma.in/accesstoken -- Works in IE11 
https://api3.doma.in/accesstoken -- Does not send preflight in IE11. 

什麼要注意的是,這三個服務器都或多或少克隆,這樣的設置也不會相差太多。

但是,我得到的,我發現了錯誤信息的錯誤是:

SEC7118: XMLHttpRequest https://api3.doma.in/accesstoken required CORS (Cross Origin Resource Sharing). 
SEC7119: XMLHttpRequest https://api3.doma.in/accesstoken required CORS Preflight. 
SCRIPT7002: XMLHttpRequest Network error 0x80070005, Access Denied. 

在網絡日誌那隻能說明預檢要求被取消了,因此沒有請求或響應頭。

回答

0

我能夠使用openssl來識別問題。通過運行$ openssl s_client -connect <url/domain>:443 -state我發現一個錯誤與ssl。

阿比1和2顯示在從OpenSSL的結果如下:

SSL_connect:SSLv3 read server certificate A 
SSL_connect:SSLv3 read server key exchange A 
SSL_connect:SSLv3 read server done A 
SSL_connect:SSLv3 write client key exchange A 
SSL_connect:SSLv3 write change cipher spec A 
SSL_connect:SSLv3 write finished A 
SSL_connect:SSLv3 flush data 
SSL_connect:SSLv3 read finished A 

在API 3(失敗的API服務器)的結果表明兩個附加操作:

SSL_connect:SSLv3 read server certificate A 
SSL_connect:SSLv3 read server key exchange A 
SSL_connect:SSLv3 read server certificate request A //This 
SSL_connect:SSLv3 read server done A 
SSL_connect:SSLv3 write client certificate A //This 
SSL_connect:SSLv3 write client key exchange A 
SSL_connect:SSLv3 write change cipher spec A 
SSL_connect:SSLv3 write finished A 
SSL_connect:SSLv3 flush data 
SSL_connect:SSLv3 read finished A 

然而,我尚未在服務器上解決此問題。同時,我正在使用xdomain「hack」(https://github.com/jpillora/xdomain)。這很容易設置和正常工作。