CORS(Cross-Origin Resource Sharing)는 리소스가 원본이 아닌 다른 도메인(원본)에서 리소스를 요청할 수 있는 방법을 제어하기 위해 웹 브라우저에서 구현하는 보안 기능입니다. 이는 리소스에 대한 무단 액세스를 방지하고 안전한 데이터 교환을 보장하므로 현대 웹 개발, 특히 API 작업 시 매우 중요합니다.
원산은 다음 조합으로 정의됩니다.
예:
동일 출처 정책은 웹 페이지의 리소스가 다른 출처의 리소스와 상호 작용할 수 있는 방식을 제한하는 보안 조치입니다.
SOP는 보안을 보장하지만 CORS가 필요한 합법적인 교차 출처 요청을 제한합니다.
CORS는 서버가 응답에 특정 HTTP 헤더를 포함하여 리소스에 액세스할 수 있는 사람을 지정할 수 있도록 하는 메커니즘입니다. 이러한 헤더는 브라우저가 클라이언트가 요청된 리소스에 액세스하도록 허용해야 하는지 여부를 나타냅니다.
브라우저는 교차 출처 요청을 할 때 서버의 응답 헤더를 확인하여 요청이 허용되는지 여부를 결정합니다.
주요 단계:
비행 전 요청(선택 사항):
특정 유형의 요청에 대해 브라우저는 실제 요청이 허용되는지 확인하기 위해 초기 OPTIONS 요청을 보냅니다.
서버 응답:
서버는 응답에 적절한 CORS 헤더를 포함합니다.
브라우저 결정:
헤더가 브라우저의 기대와 일치하면 리소스가 공유됩니다. 그렇지 않으면 브라우저가 요청을 차단합니다.
Access-Control-Allow-Origin: 리소스에 액세스할 수 있는 원본을 지정합니다.
예: Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: 허용되는 HTTP 메서드를 지정합니다.
예: 액세스 제어 허용 방법: GET, POST, PUT
Access-Control-Allow-Headers: 요청으로 보낼 수 있는 사용자 정의 헤더를 지정합니다.
예: Access-Control-Allow-Headers: 콘텐츠 유형, 승인
Access-Control-Allow-Credentials: 자격 증명(쿠키, HTTP 인증)을 보낼 수 있는지 여부를 나타냅니다.
예: Access-Control-Allow-Credentials: true
간단한 요청:
실행 전 요청:
인증된 요청:
fetch("https://api.otherdomain.com/data", { method: "GET", headers: { "Content-Type": "application/json", }, credentials: "include", // For sending cookies or credentials }) .then(response => response.json()) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Credentials: true
const express = require("express"); const cors = require("cors"); const app = express(); // Use the CORS middleware app.use(cors({ origin: "https://example.com", // Allow only this origin methods: ["GET", "POST"], // Allow these HTTP methods credentials: true, // Allow credentials })); app.get("/data", (req, res) => { res.json({ message: "CORS request successful" }); }); app.listen(3000, () => console.log("Server running on port 3000"));
오류: 요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.
오류: 자격 증명 요청에는 'Access-Control-Allow-Credentials'가 true여야 합니다.
실행 전 요청 실패:
CORS는 웹 애플리케이션에서 안전하고 기능적인 교차 출처 리소스 공유를 위한 필수 기능입니다. 서버의 CORS 헤더를 이해하고 적절하게 구성하면 웹 보안 표준을 준수하면서 도메인 간의 원활하고 안전한 통신을 보장할 수 있습니다.
안녕하세요. 저는 Abhay Singh Kathayat입니다!
저는 프론트엔드와 백엔드 기술 모두에 대한 전문 지식을 갖춘 풀스택 개발자입니다. 저는 효율적이고 확장 가능하며 사용자 친화적인 애플리케이션을 구축하기 위해 다양한 프로그래밍 언어와 프레임워크를 사용하여 작업합니다.
제 비즈니스 이메일(kaashshorts28@gmail.com)로 언제든지 연락주세요.
위 내용은 CORS 이해: JavaScript의 안전한 교차 출처 리소스 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!