2017-07-24 30 views
1

打開MVC部分視圖以填充下拉菜單時,我正在進行AJAX調用。這種聯繫是我們的一個承包商(我曾打過電話,他們正在努力幫助)。這是呼叫:對另一個域的AJAX調用產生的奇怪響應

  $.ajax({ 
     async: true, 
     crossDomain: true, 
     url: "https://contactor/integration_beta/reports?request=getStandardList", 
     type: 'POST', 
     headers: { 
      "authorization": "Basic MzY0MTVlYTktNDJjZC00ZGI1LTg1OWItNjFiODM1MzEwNzY1OjY1MDhkM2U4LTlmYTItNGE2Ny05NmYwLTgwZTgxMGY5NWNjNQ==", 
      "Access-Control-Allow-Origin": "*", 
      "content-type": "application/json" 
     }, 
     processData:false, 
     data: { version : 1.0 },// "{\n \"version\": \"1.0\"\n}", 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      var err = errorThrown; 
      alert('error, ' + errorThrown); 
     }, 
     success: function (data) { 
      var d = data; 
      alert('success, ' + data); 
      $("#txtReportStatus").val(data); 
     } 
    }); 

的問題是,我得到一個200響應:

enter image description here

但控制檯顯示錯誤:

enter image description here

不任何人都知道我在這裏做錯了什麼?

+0

您更新了https:// contactor/integration_beta/reports?request = getStandardList網站的配置以及該網絡配置? –

+0

不,我自己的網頁配置 –

+0

如果您想訪問https:// contactor/integration_beta/reports?request = getStandardList,那麼該網頁必須允許使用標題。所以,如果你是該網站的所有者,你將不得不改變網頁配置?改變你自己的配置在這裏沒有幫助 –

回答

1

必須在服務器上收到請求,而不是製作該請求(即您的應用程序)的跨域策略。錯誤是告訴你承包商的服務器不允許來自localhost的請求,這可能是它將不得不保留的方式。否則,任何人都可以創建一個可以遠程訪問API的本地網站。

爲了您的發展目的,您需要找到一種替代方法來規避CORS保護。由於CORS實際上是由瀏覽器強制執行客戶端以保護您,您可以在不涉及第三方的情況下禁用此保護。對於Chrome,您可以使用類似Allow-Control-Allow-Origin: *的擴展名。通常還有一個配置選項可以在沒有CORS的情況下啓動瀏覽器進行測試。在Chrome中,再次啓動Chrome時,您可以使用--disable-web-security命令行標誌。 確保只在開發時執行此操作,因爲您禁用了瀏覽器安全性,並且如果您只是瀏覽網頁,最終可能會危及自己。因此,擴展可能更好。

至於其他瀏覽器,我確定有類似的功能,但我使用Chrome進行開發,所以我沒有其他的細節。