Analisis keserasian seni bina sistem berbilang domain Sesi PHP dan berbilang lapisan
Dengan perkembangan teknologi Internet, seni bina sistem berbilang lapisan menjadi semakin biasa dalam aplikasi Web. Dalam seni bina sistem berbilang lapisan, akses merentas domain adalah keperluan biasa. Mekanisme Sesi dalam PHP juga digunakan secara meluas dalam fungsi seperti pengesahan dan perkongsian data dalam aplikasi Web. Artikel ini akan menyelidiki kebolehsuaian merentas domain Sesi PHP dalam seni bina sistem berbilang lapisan dan memberikan contoh kod khusus.
Pertama sekali, kita perlu memahami konsep akses merentas domain. Akses merentas domain merujuk kepada mengakses sumber pada pelayan pada penyemak imbas Nama domain sumber adalah berbeza daripada nama domain halaman semasa. Akses merentas domain seperti ini biasanya dihadkan oleh penyemak imbas Untuk menyelesaikan masalah ini, pendekatan biasa adalah menggunakan mekanisme CORS (Perkongsian Sumber Silang) Pelayan boleh membenarkan akses merentas domain kepada nama domain tertentu dengan menetapkan pengepala respons yang sepadan.
Dalam seni bina sistem berbilang peringkat, halaman hadapan dan API bahagian belakang biasanya dipisahkan kepada domain atau subdomain yang berbeza. Halaman hujung hadapan biasanya dijalankan di bawah satu domain atau subdomain, manakala API bahagian belakang berjalan di bawah domain atau subdomain lain. Dalam kes ini, halaman hadapan perlu mengakses API bahagian belakang merentas domain, sambil mengekalkan pengesahan identiti pengguna dan perkongsian data.
Untuk Sesi PHP, ia adalah mekanisme untuk menyimpan maklumat berkaitan pengguna di bahagian pelayan. Dalam kes akses merentas domain, jika domain halaman hadapan dan API hujung belakang berbeza, mekanisme Sesi PHP tidak boleh dilaksanakan secara lalai. Ini kerana Sesi PHP dilaksanakan berdasarkan kuki, dan penyemak imbas tidak akan menghantar kuki secara automatik antara domain yang berbeza.
Untuk menyelesaikan masalah ini, terdapat beberapa penyelesaian biasa:
// 前端页面 $response = $client->get('http://api.example.com/data', [ 'headers' => [ 'Cookie' => $_COOKIE['PHPSESSID'], // 将前端页面的 Session ID 发送给后端 API ], ]); $data = json_decode($response->getBody(), true); // 后端 API session_id($_SERVER['HTTP_COOKIE']); // 使用前端页面发送的 Session ID session_start(); // 从 PHP Session 中获取数据并返回给前端页面
// 前端页面 $response = $client->get('http://api.example.com/authorize'); $sessionId = $response->getHeader('Set-Cookie')[0]; // 获取后端 API 发送的 Session ID setcookie('PHPSESSID', $sessionId, time() + 86400, '/', 'example.com'); // 设置前端页面的 Session ID // 后端 API session_start(); // 执行身份验证等操作,并将 Session ID 返回给前端页面
Melalui dua kaedah di atas, kami boleh mencapai penyesuaian merentas domain Sesi PHP dalam seni bina sistem berbilang lapisan. Berdasarkan keperluan perniagaan dan keperluan keselamatan khusus, anda boleh memilih kaedah yang sesuai untuk menyesuaikan diri dengan akses merentas domain.
Atas ialah kandungan terperinci Analisis kebolehsuaian bagi seni bina sistem silang domain Sesi PHP dan berbilang lapisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!