프런트엔드와 백엔드 분리 개발이 인기를 끌면서 도메인 간 요청이 점점 더 일반적인 요구 사항이 되었습니다. thinkphp 프레임워크를 사용하여 개발할 때 도메인 간 요청 백그라운드 컨트롤러 메서드를 구현하는 방법은 무엇입니까? 이 기사에서는 도메인 간 요청을 완료하기 위해 thinkphp 프레임워크와 함께 제공되는 Header 클래스 및 타사 라이브러리를 사용하는 방법을 소개합니다.
1. 헤더 클래스
thinkphp 프레임워크에서는 헤더 클래스를 사용하여 도메인 간 요청 기능을 구현하는 응답 헤더를 설정할 수 있습니다. 구체적인 방법은 컨트롤러 메소드에 다음 코드를 추가하는 것입니다.
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
그 중 첫 번째 코드 줄은 모든 소스의 도메인 간 요청이 허용됨을 나타내며 두 번째 줄은 특정 소스로 설정할 수도 있습니다. 코드는 교차 도메인 요청에 의해 전달되는 요청이 허용됨을 나타냅니다. 이를 설정한 후에는 기본적인 교차 도메인 요청을 구현할 수 있습니다.
2. 타사 라이브러리
Header 클래스를 사용하여 도메인 간 요청을 설정하는 것 외에도 타사 라이브러리를 사용하여 이 프로세스를 단순화할 수도 있습니다. 다음은 주류 CORS(Cross-Origin Resource Sharing) 라이브러리 cors 확장을 예로 들어 타사 라이브러리를 사용하여 도메인 간 요청을 구현하는 방법을 소개합니다.
명령줄 창을 열고 다음 명령을 실행하세요.
composer require topthink/think-cors
프로젝트의 config 폴더에서 cors.php 파일을 만들고 다음 코드를 입력하세요.
<?php return [ // 允许的请求域名 'allow_origin' => ['*'], // 允许的请求头信息 'allow_headers' => 'Origin, X-Requested-With, Content-Type, Accept', // 允许的请求方法 'allow_methods' => 'GET, POST, PUT, DELETE, PATCH', // 是否允许发送cookie 'allow_credentials' => true, // 跨域请求缓存时间 'max_age' => 3600, ];
그 중 $allow_origin은 허용된 요청 도메인 이름을 나타내며, 이는 특정 도메인 이름으로 설정되거나 와일드카드 문자 "*"로 설정될 수 있습니다. $allow_headers는 허용되는 요청 헤더 정보를 나타내고, $allow_methods는 허용되는 요청 방법을 나타냅니다. $allow_credentials는 쿠키 전송이 허용되는지 여부를 나타내며, $max_age는 도메인 간 요청 캐시 시간을 나타냅니다.
프로젝트의 config 폴더에서 app.php 파일을 찾으면 구성은 다음과 같습니다.
return [ // ... 'middleware' => [ // ... \think\middleware\Cors::class, ], ];
크로스 도메인이 필요한 컨트롤러 메소드에서 요청을 직접 호출할 수 있습니다. 도메인 간 요청 설정을 구현하는 cors 확장의 메서드:
use think\facade\Cors; public function index() { Cors::allowAllOrigin(); return json(['code' => 200, 'msg' => 'success']); }
이런 방식으로 설정한 후 도메인 간 요청을 구현할 수 있습니다.
요약하자면, thinkphp 프레임워크의 도메인 간 요청 백그라운드 컨트롤러 메서드를 구현하려면 Header 클래스나 타사 라이브러리를 사용할 수 있습니다. Header 클래스를 사용하여 응답 헤더 정보를 수동으로 설정하고 타사 라이브러리를 사용하여 설정 프로세스를 단순화합니다. 구체적인 구현 방법은 귀하의 필요에 따라 선택할 수 있습니다.
위 내용은 thinkphp에서 도메인 간 요청을 완료하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!