Web サイトの管理パネル (CRUD 操作) を作成しようとしています。まず API エンドポイントを作成し、それをサブドメインでホストします。現在、そのエンドポイントからデータを取得しています。すべての連絡先の表示 (GET)、個々の連絡先の表示 (GET)、新しい連絡先の追加 (POST) はうまく機能しますが、連絡先の更新 (PUT) で何日も行き詰まっています。
事前に入力されたフォームは正常に機能します。データを送信すると、次のエラーが表示されます:
リーリーupdate.php
:
EditContact.js
postman のすべてのエンドポイントを試しました。すべて (GET、POST、PUT、DELETE) が機能しています。これらのエントリはデータベース内で更新されました。
CORS について何時間もグーグルで調べたり、コードを再度書き直したりしましたが、まったくわかりません。私はコーディングに関してはかなり初心者ですが、POST は機能するのに PUT が機能しないというのは非論理的に思えます (または、ここでいくつかの基本的なロジックが欠落しています)。
誰かが新しいアイデアを提案してくれると嬉しいです。学びたいと思っています:)
Postman はブラウザではなく HTTP クライアントです。 CORS はブラウザーで動作するため、HTTP クライアントはこれらのヘッダーを無視します。したがって、Postman を使用して API を呼び出すことに問題がないのは当然です。
エラー メッセージの重要な部分は、
プリフライト リクエストへの応答がアクセス制御チェックに失敗しました。HTTP OK ステータスがありませんでした
ということです。 プリフライトリクエストは、OPTIONSメソッドを使用したHTTPリクエストです。これは、さらなるリクエストが許可されているかどうかを確認するための偵察リクエストと考えることができます (MDN ドキュメントを参照 )。このエラーは、この OPTIONS リクエストに対する応答が HTTP 200 ではなかったことを示します。ここでの解決策は、OPTIONS リクエストの結果がすべての CORS ヘッダーが設定された HTTP 200 になるようにすることです。