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 중국어 웹사이트의 기타 관련 기사를 참조하세요!