[php] PHP에서 JSON 접근 제어(CORS) 구현하기

인터넷을 통해 다른 도메인이나 포트에서 JSON 데이터를 요청하거나 접근하는 것은 보안 상의 이유로 기본적으로 허용되지 않습니다. 하지만 Cross-Origin Resource Sharing (CORS) 정책을 통해 이를 해결할 수 있습니다.

이 포스트에서는 PHP를 사용하여 CORS 정책을 구현하는 방법에 대해 살펴보겠습니다.

CORS란?

CORS는 웹 애플리케이션이 다른 출처에서 리소스에 액세스할 수 있도록 서버가 접근을 허용하도록 허용하는 웹 표준 메커니즘입니다. 이를 통해 웹 애플리케이션은 다른 출처의 API에 AJAX 요청을 보낼 수 있습니다.

PHP에서 CORS 헤더 설정하기

PHP에서 CORS를 구현하려면, 해당 도메인에서의 요청을 허용하기 위해 HTTP 응답 헤더를 설정해야 합니다. 예를 들어, 모든 도메인에서의 요청을 허용하려면 다음 코드를 사용할 수 있습니다.

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

위 코드에서 Access-Control-Allow-Origin은 모든 도메인을 허용함을 나타내며, Access-Control-Allow-Methods는 허용된 요청 메서드를, Access-Control-Allow-Headers는 허용된 헤더를 나타냅니다. 이 외에도 필요한 경우 추가 헤더를 설정할 수 있습니다.

또한, 요청에 대한 옵션(pre-flight) 메서드에 대한 응답을 처리하기 위해 다음과 같이 코드를 작성할 수 있습니다.

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type");
    exit;
}

요약

PHP에서 CORS를 구현하는 방법에 대해 알아보았습니다. 웹 애플리케이션이 다른 출처에서 JSON 데이터에 접근해야 하는 경우, CORS를 설정하여 이를 가능하게 할 수 있습니다.

참고 자료