>  기사  >  백엔드 개발  >  Access-Control-Allow-Origin 헤더를 설정했음에도 불구하고 CORS가 PHP 애플리케이션에서 작동하지 않는 이유는 무엇입니까?

Access-Control-Allow-Origin 헤더를 설정했음에도 불구하고 CORS가 PHP 애플리케이션에서 작동하지 않는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-03 04:55:02357검색

Why is CORS not working in my PHP application despite setting Access-Control-Allow-Origin headers?

CORS가 PHP에서 작동하지 않습니다

www.siteone.com의 양식 데이터가 포함된 POST 요청을 www.sitetwo로 보내려고 할 때. com에서 CORS를 사용하는 경우 다음 오류가 발생합니다.

XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.

www.sitetwo.com의 cors.php에서 CORS 헤더를 구성했음에도 불구하고:

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>

요청이 여전히 실패하고 있습니다. 헤더 구성의 부적절한 구현. 이 문제를 해결하는 업데이트된 코드는 다음과 같습니다.

<code class="php">// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}

echo "You have CORS!";</code>

이 수정된 코드는 OPTIONS 요청 중에 수신된 Access-Control 헤더에 응답하고 모든 출처의 요청을 허용하여 CORS가 제대로 작동할 수 있도록 합니다.

위 내용은 Access-Control-Allow-Origin 헤더를 설정했음에도 불구하고 CORS가 PHP 애플리케이션에서 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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