Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melengkapkan permintaan merentas domain dalam thinkphp

Bagaimana untuk melengkapkan permintaan merentas domain dalam thinkphp

PHPz
PHPzasal
2023-04-12 09:04:331042semak imbas

Dengan populariti pembangunan pemisahan bahagian hadapan dan belakang, permintaan merentas domain telah menjadi keperluan yang semakin biasa. Apabila membangun menggunakan rangka kerja thinkphp, bagaimana untuk melaksanakan kaedah pengawal latar belakang permintaan merentas domain? Artikel ini akan memperkenalkan cara menggunakan kelas Header dan perpustakaan pihak ketiga yang disertakan dengan rangka kerja thinkphp untuk menyelesaikan permintaan merentas domain.

1. Kelas Pengepala

Dalam rangka kerja thinkphp, anda boleh menggunakan kelas Pengepala untuk menetapkan pengepala respons untuk merealisasikan fungsi permintaan merentas domain. Kaedah khusus ialah menambah kod berikut pada kaedah pengawal:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

Antaranya, baris pertama kod menunjukkan bahawa permintaan merentas domain daripada semua sumber dibenarkan, dan juga boleh ditetapkan kepada sumber khusus; baris kedua kod menunjukkan bahawa maklumat pengepala Permintaan yang dibenarkan dibawa oleh permintaan merentas domain. Selepas menyediakan ini, anda boleh melaksanakan permintaan merentas domain asas.

2. Pustaka pihak ketiga

Selain menggunakan kelas Pengepala untuk menyediakan permintaan merentas domain, anda juga boleh menggunakan perpustakaan pihak ketiga untuk memudahkan proses ini. Berikut mengambil sambungan kors perpustakaan CORS (Perkongsian Sumber Silang Asal) sebagai contoh untuk memperkenalkan cara menggunakan pustaka pihak ketiga untuk melaksanakan permintaan merentas domain.

  1. Pasang sambungan cors

Buka tetingkap baris arahan dan laksanakan arahan berikut:

composer require topthink/think-cors
  1. Konfigurasikan sambungan cors

Dalam folder konfigurasi projek, cipta fail cors.php dan masukkan kod berikut:

<?php

return [
    // 允许的请求域名
    &#39;allow_origin&#39;      => ['*'],
    // 允许的请求头信息
    'allow_headers'     => 'Origin, X-Requested-With, Content-Type, Accept',
    // 允许的请求方法
    'allow_methods'     => 'GET, POST, PUT, DELETE, PATCH',
    // 是否允许发送cookie
    'allow_credentials' => true,
    // 跨域请求缓存时间
    'max_age'           => 3600,
];

Antaranya, $allow_origin mewakili nama domain permintaan yang dibenarkan, yang boleh ditetapkan kepada nama domain tertentu, atau Boleh ditetapkan kepada kad bebas "*"; $allow_headers menunjukkan maklumat pengepala permintaan yang dibenarkan, $allow_methods menunjukkan kaedah permintaan yang dibenarkan, $allow_credentials menunjukkan sama ada kuki dibenarkan untuk dihantar, $max_age menunjukkan permintaan merentas domain masa cache.

  1. Ubah suai fail konfigurasi

Dalam folder konfigurasi projek, cari fail app.php, konfigurasi adalah seperti berikut:

return [
    // ...
    'middleware' => [
        // ...
        \think\middleware\Cors::class,
    ],
];
  1. Panggil sambungan cors

Dalam kaedah pengawal yang memerlukan permintaan silang domain, anda boleh terus memanggil kaedah dalam sambungan cors untuk merealisasikan tetapan permintaan merentas domain:

use think\facade\Cors;

public function index() {
    Cors::allowAllOrigin();
    return json(['code' => 200, 'msg' => 'success']);
}

Tetapkan seperti ini Selepas itu, permintaan merentas domain boleh dilaksanakan.

Ringkasnya, untuk melaksanakan kaedah pengawal belakang permintaan merentas domain rangka kerja thinkphp, anda boleh menggunakan kelas Header atau perpustakaan pihak ketiga. Gunakan kelas Pengepala untuk menetapkan maklumat pengepala respons secara manual dan gunakan perpustakaan pihak ketiga untuk memudahkan proses tetapan. Kaedah pelaksanaan khusus boleh dipilih mengikut keperluan anda sendiri.

Atas ialah kandungan terperinci Bagaimana untuk melengkapkan permintaan merentas domain dalam thinkphp. 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