>  기사  >  PHP 프레임워크  >  thinkphp에서 도메인 간 이미지가 표시되지 않는 문제를 해결하는 방법

thinkphp에서 도메인 간 이미지가 표시되지 않는 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-31 22:01:37966검색

먼저 크로스 도메인이 무엇인지 알아보겠습니다. JS, CSS, Ajax, 이미지 등 한 웹사이트의 리소스가 다른 웹사이트의 리소스에 액세스하도록 요청하면 동일한 웹사이트의 제한으로 인해 차단됩니다. 원산지 정책. 웹 사이트가 동일한 도메인 이름, 프로토콜 및 포트를 가진 리소스에만 액세스하도록 제한하는 것은 동일 출처 정책의 핵심 보안 기능입니다.

우리는 타사 라이브러리를 사용하여 프로젝트에 이미지를 로드하며, 이는 다른 도메인 이름을 가진 주소를 사용하여 이미지를 저장합니다. 따라서 브라우저에서는 도메인을 넘을 때 이미지가 제대로 표시되지 않습니다.

이 문제를 해결하려면 서버 측에서 몇 가지 설정을 해야 합니다. 가장 일반적인 해결책은 서버 측에 CORS(Cross-Origin Resource Sharing)를 설정하는 것입니다. CORS를 사용하면 서버가 클라이언트 요청에 응답할 때 리소스에 대한 액세스를 특정 도메인 이름으로만 제한할 수 있습니다.

ThinkPHP 프레임워크에서는 index.php 파일에 다음 코드를 추가하여 CORS를 구현할 수 있습니다.

header('Access-Control-Allow-Origin:*'); //允许所有来源访问
header('Access-Control-Allow-Method:POST,GET'); //允许访问的方式

이 코드는 모든 소스가 리소스에 액세스할 수 있도록 허용하고 POST 및 GET 액세스를 허용합니다.

여기서 주목해야 할 중요한 점은 모든 요청이 이 설정을 사용할 수 있도록 이 코드를 index.php의 상단에 배치해야 한다는 것입니다.

CORS 설정 외에도 다른 방법을 사용하여 도메인 간 문제를 해결할 수도 있습니다. 예를 들어 JSONP(JSON with Padding)는 도메인 간 문제를 해결하는 데 적합한 방법입니다. 페이지에 스크립트 태그를 추가하면 액세스해야 하는 데이터가 함수로 패키징된 다음 반환된 결과가 수신됩니다. 다른 웹사이트.

ThinkPHP 프레임워크에서는 다음 코드를 사용하여 JSONP 메서드를 생성할 수 있습니다.

$callback = isset($_GET['callback']) ? $_GET['callback'] : 'callback';
$data = array('name' => 'test', 'age' => 18);
echo $callback . '(' . json_encode($data) . ')';

먼저 GET 매개변수에 콜백 매개변수가 있는지 확인하고, 있으면 이 매개변수를 함수 이름으로 사용합니다. 다음으로 반환할 데이터를 JSON 형식으로 변환하여 콜백 함수에 추가합니다. 마지막으로 데이터를 반환할 때 데이터와 함께 함수를 브라우저에 반환합니다.

위 내용은 thinkphp에서 도메인 간 이미지가 표시되지 않는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제