Obține conținutul HTML ale unui alt cadru de pe un alt domeniu

voturi
0

Am citit că nu puteți citi codul HTML al unui alt cadru în cazul în care cadru se află pe un alt domeniu. Există o modalitate de a face acest lucru în Javascript? Îmi dau seama că această restricție este pentru scopuri de securitate, dar utilizarea mea este legitim.

Salutari

Petru

Întrebat 26/06/2009 la 20:25
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Vorbim despre un IFRAME aici? Dacă da, ar putea să nu ai atributul src al iFrame (jQuery?) Și să inițieze o cerere de ajax, care se va întoarce pagina, sau poate mână atributul src pentru propriul script (PHP / ASP orice altceva) care utilizează FLEXIE pentru a culege informațiile pe care le după?

Publicat 26/06/2009 la 20:29
sursa de către utilizator

voturi
0

Da , se poate citi cu siguranță conținutul cadrului folosind cross-domain proxy. În esență , aveți nevoie pentru a crea un script de server care solicită URL - ul src a cadrului în cauză. Pe partea de client, solicitați acest script în loc de URL - ul src (care se află pe un alt domeniu și , prin urmare , sub rezerva unor restricții de securitate în cadrul browser - ului), trecând în URL - ul src ca parametru.

Server-Side Script

Următorul este un exemplu cu PHP folosind cURL.

<?php

$target = $_REQUEST['t'];
if (empty($target)) { die 'no url provided'; }

$useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$res = curl_exec($ch);
curl_close($ch);

echo $res;

?>

Client-Side Script

Pe pagina, folosiți următoarea funcție JavaScript pentru a reveni HTML a cadrului țintă

    var URL = top.frames.(YOUR FRAME NAME HERE).location;

var xh = null;
if (window.XMLHttpRequest) {
  xh = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  xh = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  alert("Your browser does not support XMLHTTP.");
  return false;
}

var ret = null;
xh.onreadystatechange = function() { 
  if (xh.readyState == 4 && xh.status == 200) {
    // do whatever you want with the html here
    ret = xh.responseText;
  }
}
xh.open("GET", url, false);
xh.send(null);

Lasă-mă să știu dacă acest lucru funcționează pentru tine.

Publicat 26/06/2009 la 21:39
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more