웹사이트에 대한 관리 패널(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 正常状态
입니다. Preflight request는 OPTIONS 메서드를 사용하는 HTTP 요청입니다. 추가 요청이 허용되는지 확인하기 위한 정찰 요청으로 이를 처리할 수 있습니다(MDN 문서 참조). 이 오류는 이 OPTIONS 요청에 대한 응답이 HTTP 200이 아님을 나타냅니다. 여기서 해결 방법은 OPTIONS 요청으로 인해 모든 CORS 헤더가 설정된 HTTP 200이 생성되도록 하는 것입니다.