"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
}
)};
GET
とPOST
以外のHTTPリクエストが最初にOPTIONSリクエストとしてプリフライトされ、それが本物のリクエストである場合にのみ、PUT/DELETE/PATCH
リクエストとして処理される方法について読みました。
_CORS
の問題である可能性があると言った解決策を見ましたが、CORS
はenabledであり、GET/POST/PUT/PATCH/DELETE
リクエスト。さらに、GET
およびPOST
リクエストを正常に実行できますが、PUT
リクエストは実行されません。
「Chrome Dev Tools」を使用していて、ChromeのキャッシュとCookieをクリアし、DNSをフラッシュして再インストールすることにより、このエラーを修正する方法についてChromeしかし、これまでのところ解決策はありません。
私はフロントエンドUIを作成していますが、これがクライアント側のエラーなのかサーバー側のエラーなのかわかりませんか?
どんな助けでもいただければ幸いです。
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モジュールとミドルウェアのデバッグに焦点を当てます。
これは実際にはCORSの問題であり、ブラウザはOPTIONSメソッドを使用してリクエストを「プリフライト」します。 OPTIONSリクエストの後成功実際のリクエスト(あなたの場合はPUT)が行われます。
バックエンドがOPTIONリクエストに応答することを確認してください。すべてのOPTIONリクエストを簡単にキャッチして、200 OK
または204 NO CONTENT
を返すことができます。