CORS 구현이 PHP에서 작동하지 않는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-04 10:24:29
원래의
332명이 탐색했습니다.

Why is my CORS implementation not working in PHP?

PHP에서 CORS가 작동하지 않음: 해결된 사례

다른 출처 간 데이터 교환을 용이하게 하기 위해 CORS(Cross-Origin Resource Sharing)를 구현하는 것은 공통의 도전. 그러나 CORS 관련 오류가 발생하면 실망스러울 수 있습니다.

최근 한 사용자가 www.siteone.com에서 www.sitetwo.com으로 양식 데이터를 제출하려고 시도하는 동안 CORS 관련 문제에 직면했다고 보고했습니다. 대상 도메인의 "cors.php" 파일에 필수 헤더 설정을 구현했음에도 불구하고 사용자에게 "Access-control-Allow-Origin" 오류가 발생했습니다.

분석 및 해결 방법:

코드와 헤더를 검토한 결과 CORS 헤더의 초기 구현이 불완전한 것으로 나타났습니다. "cors.php"에 사용된 다음 코드 조각은 충분하지 않습니다.

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

CORS 요청을 포괄적으로 처리하려면 더 자세한 응답이 필요합니다. 다음 업데이트된 코드는 유효한 솔루션을 제공했습니다.

<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>
로그인 후 복사

결론:

CORS 구현 오류는 모든 출처의 요청을 허용하는 추가 코드 줄을 통합하여 해결되었습니다. , 자격 증명을 활성화하고 캐시 기간을 설정합니다. 이렇게 향상된 CORS 처리를 통해 원본 간 데이터 교환이 성공적으로 이루어졌습니다.

위 내용은 CORS 구현이 PHP에서 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!