Rumah  >  Artikel  >  rangka kerja php  >  Pemprosesan permintaan merentas domain ThinkPHP6: menyelesaikan masalah pemisahan bahagian hadapan dan belakang

Pemprosesan permintaan merentas domain ThinkPHP6: menyelesaikan masalah pemisahan bahagian hadapan dan belakang

PHPz
PHPzasal
2023-08-13 09:10:435855semak imbas

Pemprosesan permintaan merentas domain ThinkPHP6: menyelesaikan masalah pemisahan bahagian hadapan dan belakang

ThinkPHP6 pemprosesan permintaan merentas domain: menyelesaikan masalah pemisahan bahagian hadapan dan belakang

Dengan pembangunan aplikasi Internet yang berterusan, model pembangunan pemisahan bahagian hadapan dan belakang semakin menjadi-jadi biasa. Apabila menggunakan rangka kerja ThinkPHP6 untuk membangunkan aplikasi yang memisahkan hujung depan dan belakang, permintaan merentas domain telah menjadi masalah biasa. Artikel ini akan memperkenalkan cara mengendalikan permintaan merentas domain dalam ThinkPHP6 dan memberikan contoh kod yang sepadan.

1. Apakah permintaan merentas domain?

Permintaan merentas domain merujuk kepada aplikasi web di mana kod bahagian hadapan menghantar permintaan ke bahagian belakang nama domain atau port yang berbeza melalui Ajax dan kaedah lain. Disebabkan oleh sekatan dasar asal yang sama penyemak imbas, jika URL yang diminta berbeza daripada nama domain, protokol atau port halaman semasa, penyemak imbas akan menyekat permintaan tersebut.

2. Kaedah untuk menyelesaikan permintaan merentas domain

  1. Tetapkan pengepala respons HTTP

Dalam ThinkPHP6, anda boleh menyelesaikan masalah permintaan merentas domain dengan menetapkan pengepala respons dalam pengawal. Dalam kaedah pengawal yang perlu menyokong permintaan merentas domain, anda boleh menetapkan pengepala respons dengan menggunakan kod berikut:

<?php
namespace appcontroller;

use thinkacadeRequest;

class Index
{
    public function index()
    {
        $allowOrigin = Request::header('origin');
        $allowHeaders = 'X-Requested-With, Content-Type, Authorization';
        $allowMethods = 'GET, POST, PUT, DELETE, PATCH, OPTIONS';

        header("Access-Control-Allow-Origin: ".$allowOrigin);
        header("Access-Control-Allow-Headers: ".$allowHeaders);
        header("Access-Control-Allow-Methods: ".$allowMethods);
    }
}

Dalam kod di atas, dengan mendapatkan maklumat pengepala asal permintaan, tetapkannya sebagai Kawalan Akses -Allow-Origin kepala tindak balas. Pada masa yang sama, anda juga boleh menetapkan pengepala Access-Control-Allow-Headers dan Access-Control-Allow-Methods untuk menyokong pengepala permintaan tersuai lain dan kaedah permintaan.

  1. Gunakan perisian tengah untuk mengendalikan permintaan merentas domain

Selain menetapkan pengepala respons dalam pengawal, anda juga boleh menggunakan perisian tengah untuk mengendalikan permintaan merentas domain. Dalam ThinkPHP6, mencipta middleware merentas domain adalah sangat mudah Anda hanya perlu mencipta fail Cors.php dalam direktori app/middleware dan menulis kod yang sepadan di dalamnya.

<?php
namespace appmiddleware;

class Cors
{
    public function handle($request, Closure $next)
    {
        $allowOrigin = $request->header('origin');
        $allowHeaders = 'X-Requested-With, Content-Type, Authorization';
        $allowMethods = 'GET, POST, PUT, DELETE, PATCH, OPTIONS';

        header("Access-Control-Allow-Origin: ".$allowOrigin);
        header("Access-Control-Allow-Headers: ".$allowHeaders);
        header("Access-Control-Allow-Methods: ".$allowMethods);

        return $next($request);
    }
}

Seterusnya, daftarkan middleware dalam fail app/middleware.php:

<?php
// 其他中间件...
ppmiddlewareCors::class,

Selepas pendaftaran selesai, middleware akan diproses sebelum semua permintaan dan secara automatik menambah pengepala respons untuk menyokong permintaan merentas domain.

3. Sahkan pemprosesan permintaan merentas domain

Untuk mengesahkan bahawa pemprosesan permintaan merentas domain telah berkuat kuasa, anda boleh menggunakan alat pembangun penyemak imbas untuk melihat pengepala respons permintaan. Buka alat pembangun penyemak imbas anda (biasanya dengan menekan kekunci F12), pilih tab Rangkaian dan buat permintaan ujian. Anda seharusnya dapat melihat maklumat pengepala seperti Access-Control-Allow-Origin, Access-Control-Allow-Headers dan Access-Control-Allow-Methods dalam pengepala respons.

4. Ringkasan

Artikel ini memperkenalkan cara mengendalikan permintaan merentas domain dalam ThinkPHP6. Dengan menetapkan pengepala respons HTTP atau menggunakan perisian tengah, anda boleh menyelesaikan masalah permintaan merentas domain dalam aplikasi pemisahan bahagian hadapan dan belakang dengan mudah. Dalam pembangunan sebenar, pilih kaedah yang sesuai mengikut keperluan, dan lakukan konfigurasi yang sepadan dan pemprosesan fleksibel mengikut senario tertentu.

Saya harap artikel ini akan membantu anda mengendalikan permintaan merentas domain apabila menggunakan rangka kerja ThinkPHP6 untuk membangunkan aplikasi pemisahan bahagian hadapan dan belakang. Jika anda mempunyai sebarang soalan atau cadangan, sila tinggalkan mesej untuk perbincangan.

Atas ialah kandungan terperinci Pemprosesan permintaan merentas domain ThinkPHP6: menyelesaikan masalah pemisahan bahagian hadapan dan belakang. 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