>웹 프론트엔드 >JS 튜토리얼 >REST API에 액세스할 때 'No 'Access-Control-Allow-Origin' 헤더' 오류가 발생하는 이유는 무엇입니까?

REST API에 액세스할 때 'No 'Access-Control-Allow-Origin' 헤더' 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-31 15:53:10259검색

Why Am I Getting a

응답에 'Access-Control-Allow-Origin' 헤더 없음

CORS 및 실행 전 요청 이해

교차 원본 리소스 공유(CORS) 브라우저 요청이 요청 원본과 다른 원본의 리소스에 액세스할 수 있도록 하는 메커니즘입니다. 다른 출처에서 요청이 이루어지면 브라우저는 서버에 preflight OPTIONS 요청을 보내 서버가 요청을 허용하는지 확인합니다.

질문에 설명된 경우 브라우저는 preflight OPTIONS 요청을 보냅니다. HP ALM REST API에 요청합니다. 그러나 서버가 필요한 CORS 헤더로 응답하지 않아 "요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다."라는 오류가 발생합니다.

문제 해결

이 문제를 해결하는 방법에는 여러 가지가 있습니다.

CORS 사용 프록시:

CORS 프록시는 요청을 대상 서버로 전달하고 필요한 CORS 헤더를 응답에 추가합니다. 이는 대상 서버를 제어할 수 없는 경우 편리할 수 있습니다.

실행 전 요청 방지:

실행 전 요청을 방지하려면 요청이 Authorization 또는 Content-Type 헤더가 필요하지 않습니다. 이는 대체 인증 방법을 사용하거나 JSON 데이터를 쿼리 매개변수로 인코딩하여 달성할 수 있습니다.

와일드카드 문제 해결:

"Access-Control-Allow" 오류 -Origin 헤더는 와일드카드가 아니어야 합니다." 오류는 서버가 Access-Control-Allow-Origin 헤더에 대해 특정 원본 대신 와일드카드('*')를 지정할 때 발생합니다. 클라이언트를 요청합니다. 이 문제를 해결하려면 Access-Control-Allow-Origin 헤더를 요청 원본으로 설정하도록 서버를 구성하세요.

JavaScript 코드 수정

질문의 JavaScript 코드에 잘못된 헤더가 일부 있습니다. 실행 전 요청을 트리거합니다:

headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
headers.append('Access-Control-Allow-Credentials', 'true');

이 헤더는 전송되지 않으므로 제거하세요. 요청하세요.

위 내용은 REST API에 액세스할 때 'No 'Access-Control-Allow-Origin' 헤더' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.