>  기사  >  백엔드 개발  >  PHP 백엔드에서 도메인 간 도메인 이름을 제어하고 도메인 간 이미지 업로드를 허용하는 방법을 소개합니다.

PHP 백엔드에서 도메인 간 도메인 이름을 제어하고 도메인 간 이미지 업로드를 허용하는 방법을 소개합니다.

不言
不言앞으로
2018-11-12 13:52:513941검색

이 글은 PHP 백엔드로 도메인 간 도메인 이름을 제어하고 이미지의 크로스 도메인 업로드를 허용하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 당신에게.

교차 도메인 문제는 종종 직면해야 하며 프런트 엔드는 더 직접적으로 수행해야 합니다.

Ajax 비동기 제출, XML 또는 jsonp를 선택하거나 양식 제출을 선택하세요

jsonp는 기본적으로 대부분의 교차 도메인 문제를 해결할 수 있습니다. 하지만 문제는 더욱 명백합니다. get 메소드를 통해 제출할 수 있으며

jsonp는 URL에 매개변수를 넣어 요청을 제출합니다

그러나 모든 브라우저에는 URL 길이 제한이 있고 브라우저마다 길이 제한이 다릅니다

언제든지 예를 들어 기사에 jsonp를 사용하는 경우 길이를 초과하는 경우에만 분할하여 제출할 수 있으며 이는 매우 번거롭고 최종 분석에 어느 정도 영향을 미칩니다. 보안. 또한, axiox는 현재 jsonp를 지원하지 않습니다. 특히 이미지 리소스 업로드를 위한 방법이 있지만 jsonp 및 기타 방법을 사용하여 제대로 구현할 수 없습니다

교차 도메인 이미지 업로드가 필요한 시나리오

물론 크로스 도메인이 아니고 크로스 도메인을 하지 않는 것이 가장 좋지만 현재 대부분의 프로젝트는 프런트엔드와 백엔드를 분리했습니다

Static 리소스와 인터페이스는 각각 다른 도메인 이름 또는 2차 도메인 이름이므로 크로스 도메인. 리소스 업로드인 경우 리소스 업로드 시 백엔드 Access-Control-Allow-Origin이 현재 요청된 Origin과 동일해야 합니다. 전통적인 데이터 요청인 경우 백엔드는 Access-Control-Allow-Origin을 *

 header('Access-Control-Allow-Origin:*');
로 직접 설정할 수 있습니다. 하지만 사진과 같은 리소스를 업로드하는 원본은 Access-Control을 따라야 합니다. Allow-Origin의 값은 same

Access-Control-Allow-Origin을 현재 Origin과 동일하게 설정하면 업로드할 수 있는 도메인 이름이 하나로 제한됩니다

이 인터페이스를 호출해야 하는 다른 도메인 이름이 있는 경우, 그들은 금지될 것입니다

따라서 가장 좋은 방법은 이 인터페이스를 호출할 수 있는 도메인 이름 목록을 제한하는 것이며, 이는 또한 현재 요청의 출처를 먼저 얻는 것입니다. 접근이 허용된 도메인 이름 목록, Access-Control-Allow 설정 -Origin 값은 현재 요청의 Origin으로 설정됩니다

$originList = [
    'http://127.0.0.1',
    'http://www.php.cn',
    'http://www.php.cn',
];
if(in_array($_SERVER['HTTP_ORIGIN'], $originList)){
    header('Access-Control-Allow-Origin:'.$origin);
    header("Access-Control-Allow-Credentials: true");
    header('Access-Control-Allow-Headers:x-requested-with,content-type');
    header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
}

이 방법으로 도메인 간 도메인 이름을 제어할 수 있으며, 이미지 리소스는 같은 도메인에 있는 것처럼 즐겁게 업로드 가능게시 방법 크로스 도메인 제출도 가능

위 내용은 PHP 백엔드에서 도메인 간 도메인 이름을 제어하고 도메인 간 이미지 업로드를 허용하는 방법을 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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