Rumah > rangka kerja php > ThinkPHP > teks badan

Bagaimana untuk menyelesaikan masalah bahawa imej merentas domain tidak dipaparkan dalam thinkphp

WBOY
Lepaskan: 2023-05-31 22:01:37
ke hadapan
976 orang telah melayarinya

Mula-mula, mari kita fahami apa itu merentas domain. Cross-domain berlaku antara dua tapak web dengan nama domain yang berbeza Apabila sumber satu tapak web, seperti JS, CSS, Ajax, atau imej, meminta untuk mengakses sumber tapak web lain, mereka disekat kerana sekatan yang sama-. dasar asal. Mengehadkan tapak web untuk hanya mengakses sumber dengan nama domain, protokol dan port yang sama dengan dirinya sendiri ialah ciri keselamatan utama dasar asal yang sama.

Kami menggunakan perpustakaan pihak ketiga untuk memuatkan imej dalam projek, yang menggunakan alamat dengan nama domain yang berbeza untuk menyimpan imej. Oleh itu, dalam penyemak imbas, imej tidak boleh dipaparkan dengan betul apabila ia melintasi domain.

Untuk menyelesaikan masalah ini, kami perlu membuat beberapa tetapan pada bahagian pelayan. Penyelesaian yang paling biasa ialah menyediakan CORS (Cross-Origin Resource Sharing) di bahagian pelayan. CORS membenarkan pelayan menyekat akses kepada sumber kepada hanya nama domain tertentu apabila bertindak balas kepada permintaan pelanggan.

Dalam rangka kerja ThinkPHP, kita boleh melaksanakan CORS dengan menambahkan kod berikut dalam fail index.php:

header('Access-Control-Allow-Origin:*'); //允许所有来源访问
header('Access-Control-Allow-Method:POST,GET'); //允许访问的方式
Salin selepas log masuk

Kod ini membenarkan semua sumber mengakses sumber dan membenarkan kaedah POST dan GET mengakses .

Perkara penting untuk diperhatikan di sini ialah kod ini harus diletakkan di bahagian atas index.php supaya semua permintaan boleh menggunakan tetapan ini.

Selain menyediakan CORS, kami juga boleh menggunakan kaedah lain untuk menyelesaikan isu merentas domain. Sebagai contoh, JSONP (JSON dengan Padding) ialah kaedah yang boleh dilaksanakan untuk menyelesaikan masalah merentas domain Dengan menambahkan teg skrip pada halaman, data yang perlu diakses dibungkus ke dalam fungsi, dan kemudian hasil yang dikembalikan diterima pada. laman web lain.

Dalam rangka kerja ThinkPHP, kita boleh menggunakan kod berikut untuk menjana kaedah JSONP:

$callback = isset($_GET['callback']) ? $_GET['callback'] : 'callback';
$data = array('name' => 'test', 'age' => 18);
echo $callback . '(' . json_encode($data) . ')';
Salin selepas log masuk

Kami mula-mula menyemak sama ada parameter GET mempunyai parameter panggil balik, dan jika ya, gunakan parameter ini sebagai nama fungsi. Seterusnya, tukar data untuk dikembalikan ke dalam format JSON dan tambahkannya pada fungsi panggil balik. Akhirnya, apabila memulangkan data, kami mengembalikan fungsi tersebut kepada penyemak imbas bersama-sama dengan data.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa imej merentas domain tidak dipaparkan dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!