2014-01-23 151 views
3

我已經寫了一個WebAPI控制器,我正在使用CORS以交叉域AJAX調用的GET方式請求數據。在我的本地環境中,通過HTTP,一切都按預期工作。當我通過HTTPS將代碼推廣到我們的預生產環境時,OPTIONS請求失敗,出現以下情況: 請求的資源上不存在'Access-Control-Allow-Origin'標頭CORS選項通過HTTPS請求失敗

在進行調查,我發現如果請求發生錯誤,則會顯示Access-Control-Allow-Origin錯誤。不管錯誤是什麼。這對安全是有幫助的,所以我找不到實際的錯誤。

正如我之前所說的,所有內容都可以在HTTP上很好地工作,但是無法通過HTTPS。我已經在WebAPI控制器上設置了日誌記錄,當通過跨域的HTTPS請求時,OPTIONS方法甚至沒有被擊中。

下面是我的WebAPI控制器的OPTIONS方法:

[AcceptVerbs("OPTIONS")] 
    public HttpResponseMessage Options() 
    { 
     var resp = new HttpResponseMessage(HttpStatusCode.OK); 
     resp.Headers.Add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept"); 
     resp.Headers.Add("Access-Control-Allow-Origin", ConfigurationManager.AppSettings["MSOContent"]); 
     resp.Headers.Add("Access-Control-Allow-Credentials", "true"); 

     return resp; 
    } 

一定有什麼東西在被殺害在某些形式的請求HTTPS協議。任何幫助將不勝感激。

回答

0

如果它的工作通過HTTP那麼它很有可能的問題是,您的瀏覽器處理SSL證書是不可信沒有被接受。此問題的控制檯錯誤消息看起來與'Origin'CORS錯誤完全相同。

瀏覽https://youdomain,看看以下彈起:

Untrusted

如果是這樣,添加例外,現在你的瀏覽器會很樂意讓使用您現在受信任的證書該域的呼叫。