문제 설명:
CORS(Cross-Origin)를 통해 양식 데이터를 전송하려고 할 때 리소스 공유) www.siteone.com에서 www.sitetwo.com으로 이동하면 다음 오류가 발생합니다.
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에서 다음 헤더를 설정했음에도 불구하고:
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
해결책:
문제는 CORS 요청 헤더를 처리하는 방식에 있습니다. cors.php에 대한 다음 업데이트된 코드는 CORS 요청에 대한 보다 포괄적인 응답을 제공합니다.
<code class="php"><?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); } // Respond to the request echo "You have CORS!"; ?></code>
이 수정된 코드는 모든 출처의 교차 출처 요청을 허용하고 요청 방법 및 헤더의 유효성을 검사하며 CORS 응답을 캐시합니다. OPTIONS 요청에 적절하게 응답합니다.
위 내용은 내 CORS 요청이 'Access-Control-Allow-Origin에서 허용되지 않는 원본'으로 인해 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!