web-dev-qa-db-ja.com

エラーOPTIONS net :: ERR_CONNECTION_REFUSED

"jQuery"(フロントエンド)と "Python"(バックエンド)を使用してWebアプリケーションを開発しています。データベースの詳細を更新するためのPUTリクエストを作成しているときに、コンソールで次のエラーが発生します。

オプション「REST API URL」net :: 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
    }
)};

GETPOST以外のHTTPリクエストが最初にOPTIONSリクエストとしてプリフライトされ、それが本物のリクエストである場合にのみ、PUT/DELETE/PATCHリクエストとして処理される方法について読みました。
_CORSの問題である可能性があると言った解決策を見ましたが、CORSenabledであり、GET/POST/PUT/PATCH/DELETE リクエスト。さらに、GETおよびPOSTリクエストを正常に実行できますが、PUTリクエストは実行されません。
「Chrome Dev Tools」を使用していて、ChromeのキャッシュとCookieをクリアし、DNSをフラッシュして再インストールすることにより、このエラーを修正する方法についてChromeしかし、これまでのところ解決策はありません。
私はフロントエンドUIを作成していますが、これがクライアント側のエラーなのかサーバー側のエラーなのかわかりませんか?
どんな助けでもいただければ幸いです。

7
Purander Dua

1つ確かなことは、これはバックエンドの問題です。これは、バックエンドとフロントエンド間のOrigin間の通信が適切に接続されていない場合に発生します。 corsをインポートしてミドルウェアをセットアップしたことを考えると、おそらく、Origin URLとリクエストURLに関してPUTメソッドの使用を間違えた可能性があります。

できること:

1)両方のサーバーが実行されていることを確認します(バックエンドとフロントエンド)。

2)google開発ツールを調べて、ネットワークセクションを確認します。リクエストヘッダーと一般を見てください。 request URL/backendにバックエンドサーバーのURLがあり、orgin/frontendにフロントエンドURLがあることを確認します。

3)http.put()メソッドで、フィードするドメインがサーバーで設定したAPIと一致していることを確認します。

4)問題は、バックエンドがフロントエンドに適切に接続されていないことです。そのため、他のエラーを見つけるために時間を無駄にしないでください。 http.put()メソッドと、インポートしたcorsモジュールとミドルウェアのデバッグに焦点を当てます。

10
EyoelD

これは実際にはCORSの問題であり、ブラウザはOPTIONSメソッドを使用してリクエストを「プリフライト」します。 OPTIONSリクエストの後成功実際のリクエスト(あなたの場合はPUT)が行われます。

バックエンドがOPTIONリクエストに応答することを確認してください。すべてのOPTIONリクエストを簡単にキャッチして、200 OKまたは204 NO CONTENTを返すことができます。

2
Maurice Meyer