본문 바로가기
개발

PHP AJAX에서 CORS 오류 예제 및 해결 방법 / php ajax cors error example

by 농담곰이 2023. 5. 5.
반응형

Cross-Origin Resource Sharing (CORS)는 웹 페이지가 웹 페이지를 제공한 도메인과 다른 도메인에 요청을 보내는 것을 제한하는 웹 브라우저의 보안 기능입니다. 그러나 때로는 도메인 간 AJAX 요청을 할 때 CORS 오류가 발생할 수 있습니다. 이 문제를 해결하려면 서버 측 PHP 코드를 수정하여 적절한 CORS 헤더를 포함해야 합니다.


다음은 간단한 PHP AJAX 요청의 CORS 오류가 발생하는 예시와 이를 해결하는 방법입니다:

1. 클라이언트 측 자바스크립트 코드 (index.html):

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX CORS Example</title>
</head>
<body>
    <button id="getData">Get Data</button>
    <script>
        document.getElementById("getData").addEventListener("click", function() {
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    console.log(this.responseText);
                }
            };
            xhr.open("GET", "https://example.com/api/data.php", true);
            xhr.send();
        });
    </script>
</body>
</html>
```

2. CORS 헤더가 없는 서버 측 PHP 코드 (data.php):

```php
<?php
$data = array("message" => "Hello, world!");
header("Content-Type: application/json");
echo json_encode($data);
?>
```

위 코드를 실행하면 서버 측 PHP 코드에 필요한 CORS 헤더가 포함되어 있지 않기 때문에 CORS 오류가 발생할 가능성이 높습니다.

이 문제를 해결하려면 PHP 코드에 다음 CORS 헤더를 추가하십시오:

```php
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
header("Content-Type: application/json");

$data = array("message" => "Hello, world!");
echo json_encode($data);
?>
```

위와 같이 코드를 수정하면 CORS 오류가 해결되어 클라이언트에서 API 요청이 정상적으로 처리됩니다.

반응형

댓글