Rumah  >  Artikel  >  rangka kerja php  >  Cara untuk mematikan sekatan pada permintaan merentas domain dalam projek Laravel

Cara untuk mematikan sekatan pada permintaan merentas domain dalam projek Laravel

PHPz
PHPzasal
2023-04-13 13:37:44866semak imbas

Apabila menggunakan Laravel untuk membina aplikasi web, atas sebab keselamatan, penyemak imbas melarang permintaan merentas domain antara domain berbeza secara lalai, yang mungkin menyebabkan beberapa fungsi tidak berfungsi dengan baik. Artikel ini menerangkan cara untuk mematikan sekatan pada permintaan silang asal dalam aplikasi Laravel.

Permintaan silang asal ialah teknik untuk membuat permintaan merentas domain dalam penyemak imbas, contohnya, daripada aplikasi yang dijalankan pada localhost:8000 kepada API yang dijalankan pada localhost:8080.

Laravel mempunyai sekatan yang agak ketat pada permintaan asal silang secara lalai Ini adalah untuk mengelakkan serangan pemalsuan permintaan merentas tapak. Oleh itu, jika aplikasi anda perlu menyokong permintaan merentas domain, anda perlu mengambil beberapa langkah untuk mematikan sekatan permintaan merentas domain Laravel.

Berikut ialah beberapa kaedah yang boleh anda gunakan untuk mematikan sekatan pada permintaan merentas domain dalam aplikasi Laravel anda:

  1. Gunakan proksi

Anda boleh gunakan proksi untuk memajukan permintaan Silang asal. Dalam kes ini, permintaan akan dihantar ke pelayan yang berada dalam domain yang sama dengan aplikasi web dan tidak mempunyai sekatan permintaan merentas domain. Aplikasi Laravel akan sentiasa mengharapkan permintaan datang daripada pelayan tempatan, jadi jangan risau tentang antara muka yang diberikan.

  1. Tambah middleware

Anda boleh menulis middleware untuk mendayakan permintaan merentas domain. Perisian tengah ini akan menetapkan pengepala yang diperlukan untuk membenarkan respons kepada permintaan silang asal. Berikut ialah contoh kod untuk menambahkan middleware dalam aplikasi 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;
    }
}

Dalam aplikasi anda, anda boleh menambah middleware ini pada laluan yang anda ingin mematikan sekatan permintaan merentas domain atau Tambahkan pada middleware global kumpulan.

  1. Menggunakan fungsi permintaan merentas domain Laravel

Laravel menyediakan cara terbina dalam untuk mengendalikan permintaan merentas domain. Anda boleh menggunakan fungsi permintaan merentas domain Laravel dalam laluan atau pengawal, contohnya:

<?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;
    }
}

Kod di atas menetapkan pengepala respons untuk membenarkan permintaan merentas domain dari semua asal.

Ringkasan:

Artikel ini memperkenalkan tiga kaedah untuk mematikan sekatan permintaan merentas domain dalam aplikasi Laravel. Menggunakan proksi mungkin merupakan cara yang paling mudah, tetapi anda boleh menggunakan perisian tengah atau ciri terbina dalam Laravel untuk mempunyai kawalan yang lebih halus ke atas permintaan silang asal. Bergantung pada keperluan aplikasi anda, anda boleh memilih dasar yang paling sesuai untuk anda untuk melumpuhkan sekatan pada permintaan silang asal.

Atas ialah kandungan terperinci Cara untuk mematikan sekatan pada permintaan merentas domain dalam projek Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn