Saya mencoba memasukkan tag HTML base ke dalam iframe yang memuat URL jarak jauh.

<iframe name="frame" id="frame" src="proxy.php" width="550" height="150"></iframe>

Isi dari Proxy.php ada di bawah

$url = 'https://theurl.com/buyflow/buyflow-localization.html'; 
$probe = file_get_contents($url);
echo $probe;

Bingkai memuat semua tautan absolut dengan benar, tetapi ketika mencoba memuat tautan relatif itu merujuk ke localhost saya (server web lokal) @ 127.0.0.1

-2
Rain 11 November 2017, 13:15

1 menjawab

Jawaban Terbaik

base Anda harus berada di dalam elemen head. Solusi yang mungkin adalah menggunakan kelas DOMDocument untuk memanipulasi dokumen. Sesuatu seperti ini:

$dirUrl = 'https://theurl.com/buyflow/';
$url = $dirUrl . 'buyflow-localization.html';
$probe = file_get_contents($url);

$doc = new DOMDocument();
$doc->loadHTML($probe);

$head = $doc->getElementsByTagName('head')[0]; // try also ->item(0) instead of [0]
$bases = $head->getElementsByTagName('base');
if(count($bases) == 0) {
    $base = $doc->createElement('base');
    $head->appendChild($base);
} else
    $base = $bases[0]; // same here
$base->setAttribute('href', $dirUrl);

echo $doc->saveHTML();
0
YakovL 14 November 2017, 12:12