2017-07-15 1242 views
-1

我正在開發一個使用jQuery(前端)和Python(後端)的Web應用程序。同時使PUT請求,以更新數據庫中的細節,這是我在控制檯得到的錯誤:錯誤選項net :: ERR_CONNECTION_REFUSED

OPTIONS 「REST API URL」 網:: ERR_CONNECTION_REFUSED

我jQuery代碼是:

$.ajax({ 
 
    type: "PUT", 
 
    url: "REST API URL", 
 
    headers: {"Content-Type": "application/json", "Authorization": AuthToken}, 
 
    data: "details to be updated in database", 
 
    contentType: "application/json; charset=utf-8", 
 
    dataType: "json", 
 
    success: function(data,status) { 
 
     //do something with data 
 
    }, 
 
    error: function(data,status) { 
 
     //show error data and status 
 
    } 
 
)};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我讀到HTTP以外如何請求GET和POST是第一PR作爲OPTIONS請求的e-flighted,並且只有當它是一個真正的請求時,它纔會作爲PUT/DELETE/PATCH請求處理。
我看到了解決方案,它說它可能是一個CORS問題,但CORS從後端啓用以允許GET/POST/PUT/PATCH/DELETE請求。此外,我成功地能夠發出GET和POST請求,但沒有PUT請求正在經歷。
我正在使用Chrome開發工具,並研究如何通過清除緩存和Cookie /刷新DNS /重新安裝Chrome來修復Chrome的這一錯誤,但目前爲止還沒有任何解決方案奏效。
我是一個製作前端用戶界面,我不確定這是客戶端cide錯誤還是服務器端錯誤?
任何幫助,將不勝感激。

+0

url:「REST API URL」,你知道這必須是真正的api url嗎? –

+0

我使用了真實的API,但忘記提及端口號。從我的最後一個非常愚蠢的錯誤。 謝謝 –

回答

0

鑑於事實上它確實是一個CORS問題 - 瀏覽器使用OPTIONS方法「預檢」請求。在OPTIONS請求成功後實際的請求(在你的情況下PUT)。

確保後端響應OPTION請求。您可以輕鬆捕獲所有OPTION請求並返回200 OK204 NO CONTENT

+0

通過允許GET/POST/PUT/DELETE/OPTIONS請求,將後端配置爲允許CORS。 儘管問題只發生在PUT請求和PATCH請求上。 GET和POST請求已成功發送。 –

+0

什麼意思配置?您需要響應OPTIONS的「預檢」!預檢是非簡單(PUT,DELETE,...)請求所必需的。查看「Preflighted請求」下的官方Mozilla [docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)。當您共享後端代碼以及如何允許CORS時,這可能會有所幫助。 –

+0

我有一個Django服務器,其中,所述settings.py文件具有下面的代碼,以允許CORS: CORS_ALLOW_METHODS =( 'GET', 'POST', 'PUT', 'PATCH', '刪除' , '選項' ) –

0

有一件事是肯定的,這是一個後端問題。當後端和前端之間的交叉源通信未正確連接時會發生這種情況。考慮到你已經導入了cors並設置了中間件,很可能你在源URL和請求URL方面使用PUT方法犯了一個錯誤。

事情可以做:

1)確保兩個服務器都運行(後端和前端)。

2)看看谷歌開發工具,看看網絡部分。查看請求標題和常規。確保請求URL /後端有您的後端服務器URL,並且orgin/frontend有您的前端URL。

3)確保在你的http.put()方法中,你餵它的域匹配你在服務器中設置的api。

4)你的問題是你的後端沒有正確連接到你的前端,所以不要浪費你的時間去尋找其他錯誤。重點關注調試http.put()方法以及您導入的cors模塊和中間件。

相關問題