>  기사  >  PHP 프레임워크  >  Laravel 프로젝트에서 도메인 간 요청에 대한 제한을 해제하는 방법

Laravel 프로젝트에서 도메인 간 요청에 대한 제한을 해제하는 방법

PHPz
PHPz원래의
2023-04-13 13:37:44837검색

Laravel을 사용하여 웹 애플리케이션을 구축할 때 보안상의 이유로 브라우저는 기본적으로 다른 도메인 간의 도메인 간 요청을 금지하므로 일부 기능이 제대로 작동하지 않을 수 있습니다. 이 문서에서는 Laravel 애플리케이션에서 교차 출처 요청에 대한 제한을 해제하는 방법을 설명합니다.

Cross-origin 요청은 브라우저에서 도메인 간 요청을 시작하는 기술입니다. 예를 들어 localhost:8000에서 실행되는 애플리케이션에서 localhost:8080에서 실행되는 API에 대한 요청을 시작합니다.

Laravel은 기본적으로 교차 도메인 요청에 대해 상당히 엄격한 제한을 두고 있습니다. 이는 교차 사이트 요청 위조 공격을 방지하기 위한 것입니다. 따라서 애플리케이션이 도메인 간 요청을 지원해야 하는 경우 Laravel의 도메인 간 요청 제한을 해제하는 몇 가지 단계를 수행해야 합니다.

다음은 Laravel 애플리케이션에서 도메인 간 요청에 대한 제한을 해제하는 데 사용할 수 있는 몇 가지 방법입니다.

  1. 프록시 사용

프록시를 사용하여 도메인 간 요청을 전달할 수 있습니다. 이 경우 요청은 웹 애플리케이션과 동일한 도메인에 있고 도메인 간 요청 제한이 없는 서버로 전송됩니다. Laravel 애플리케이션은 항상 로컬 서버로부터 요청이 올 것으로 예상하므로 인터페이스가 렌더링되는 것에 대해 걱정하지 마십시오.

  1. 미들웨어 추가

도메인 간 요청을 활성화하는 미들웨어를 작성할 수 있습니다. 이 미들웨어는 교차 출처 요청에 응답할 수 있도록 필요한 헤더를 설정합니다. 다음은 Laravel 애플리케이션에 미들웨어를 추가하기 위한 샘플 코드입니다:

<?php
namespace App\Http\Middleware;

use Closure;

class CorsMiddleware {
    public function handle($request, Closure $next) {
        $headers = [
            &#39;Access-Control-Allow-Origin&#39; => '*',
            'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin',
        ];
        if ($request->getMethod() == "OPTIONS") {
            return response()->json('{"method":"OPTIONS"}', 200, $headers);
        }
        $response = $next($request);
        foreach ($headers as $key => $value) {
            $response->header($key, $value);
        }
        return $response;
    }
}

애플리케이션에서 이 미들웨어를 도메인 간 요청 제한을 끄려는 경로에 추가하거나 글로벌 미들웨어 그룹에 추가할 수 있습니다.

  1. Laravel의 도메인 간 요청 기능 사용

Laravel은 도메인 간 요청을 처리하는 내장된 방법을 제공합니다. Laravel의 도메인 간 요청 기능은 경로나 컨트롤러에서 사용할 수 있습니다. 예:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class ApiController extends Controller
{
    public function index(Request $request)
    {
        $data = [
            &#39;name&#39; => 'John Doe',
            'email' => 'johndoe@example.com',
        ];

        $response = new Response($data);
        $response->header('Access-Control-Allow-Origin', '*');
        $response->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
        $response->header('Access-Control-Allow-Headers', 'Content-Type, X-Auth-Token, Origin');

        return $response;
    }
}

위 코드는 모든 출처의 도메인 간 요청을 허용하도록 응답 헤더를 설정합니다.

요약:

이 글에서는 Laravel 애플리케이션에서 도메인 간 요청 제한을 해제하는 세 가지 방법을 소개합니다. 프록시를 사용하는 것이 아마도 가장 쉬운 방법일 것입니다. 그러나 미들웨어나 Laravel의 내장 기능을 사용하여 교차 출처 요청을 보다 세밀하게 제어할 수 있습니다. 애플리케이션 요구 사항에 따라 원본 간 요청에 대한 제한을 비활성화하는 데 가장 적합한 정책을 선택할 수 있습니다.

위 내용은 Laravel 프로젝트에서 도메인 간 요청에 대한 제한을 해제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.