Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML5] Pobieranie zawartoci strony z innej domeny., Za pomocą HTML5 + JS
fenix.robi
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Witam,

Czy ktoś mógłby wskazać dobry przykład wykorzystania HTML5 + JS w pobieraniu zawartości strony z innej domeny.
Rozwiązania oparte o iframe odpadają z wiadomego powodu. PHP też nie wchodzi w grę.

Jeśli znacie też inne sposoby to możecie się podzielić.
Go to the top of the page
+Quote Post
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


a może cURL'em?
Go to the top of the page
+Quote Post
fenix.robi
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Hmm może nie sprecyzowałem, musi to się odbyć po stronie klienta, po prostu na domeniaA przyszykowuje sobie stronę do pobrania, a z domenyB ją pobieram używając tylko technik po stronie klienta, z czego chcem uniknąć używania iframe.
Więc cURL odpada.

P.S. Wdrażam się teraz w JSONP ale nigdzie nie mogę znaleźć co po stronie domenyA mam zrobić żeby wszystko chodziło.
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Nie można pobrać źródła innej domeny, bezpośrednio po stronie klienta, jest to naruszenie bezpieczeństwa.
Połącz się przez ajax do php > return file_get_contents()

Ten post edytował !*! 29.01.2013, 11:05:23
Go to the top of the page
+Quote Post
fenix.robi
post
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


A jak jest zrobiony np LIKE BOX z FaceBooka, przecież mogę go zamiescić, nie używając PHP (w domenie B - tu nie mogę użyc PHP wysietlam uprzednio przyszykowaną stronę z domeny A - tu mogę użyć PHP ) Chodziu mi o ten sam efekt.

Ten post edytował fenix.robi 29.01.2013, 11:16:29
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Ajax. A jak chcesz dokładnie wiedzieć jak to działa, to użyj dragonfly w operze, lub firebug w Fx.

Ten post edytował !*! 29.01.2013, 11:18:57
Go to the top of the page
+Quote Post
fenix.robi
post
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Cytat(!*! @ 29.01.2013, 11:17:34 ) *
Ajax. A jak chcesz dokładnie wiedzieć jak to działa, to użyj dragonfly w operze, lub firebug w Fx.


Tak jak napisałeś w poprzednim poście porpzez XMLHttpRequest, nie można pobierać zawartości z innych domen, z przyczyn bezpieczeństwa. Szukam rozwiązania podobnego do FB / G+ lecz oni mają własne rozwiązanie zastępujące iframe
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Zauważ że nawet źródła z iframe nie pobierzesz. Jedyne rozwiązanie to połączenie się z serwerem o którym pisałem, skoro na serwerze B masz możliwość użycia PHP, to z nim się połącz z serwera A.
Go to the top of the page
+Quote Post
pluskwa
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


  1. $curl = curl_init();
  2. //Inicujemy curl
  3.  
  4. curl_setopt($curl, CURLOPT_URL, 'http://www.strona.pl');
  5. //pobieramy dane z "http://www.strona.pl"
  6.  
  7. curl_setopt($curl, CURLOPT_REFERER, "http://www.google.pl/");
  8. //ustawiamy refferer na www.google.pl (niektóre strony mają zabezpieczenia
  9.  
  10. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  11. //podążamy za ewentualnym przekierowaniem
  12.  
  13. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  14. //wyniku nie wyświetlamy a zapisujemy do zmiennej co ułatwia prace nad nim
  15.  
  16. curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)');
  17. //ustawiamy useragent (niektóre strony mają zabezpieczenia)
  18.  
  19. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  20. //Maxymalny czas połączenia ze stroną
  21.  
  22. curl_setopt($curl, CURLOPT_HEADER, 0);
  23. //nie chcemy dołączać nagłówka
  24.  
  25. $strona = curl_exec($curl);
  26. //uruchamiamy skonfigurowanego curla
  27.  
  28. curl_close($curl);
  29. //zamykamy


Może to pomoże (IMG:style_emoticons/default/smile.gif) Teraz mamy pobraną stronkę w $strona
Go to the top of the page
+Quote Post
fenix.robi
post
Post #10





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Dzięki, ale znam cURLa, ja chcem zrobić dokładnie to samo co ten LIKE BOX , czyli przyszykowaną przezemnie stronę (element), udostępnić innym stronom, na zasadzie dodania widgetu o zdefiniowanych wymiarach.

Cieszę się ze jest zainteresowanie tym tematem, lecz zdziwiłem się że nie ma w googlu dokładnych rozwiązań, jak myśle na taki prosty problem. Szukam dalej

Ten post edytował fenix.robi 29.01.2013, 11:52:19
Go to the top of the page
+Quote Post
!*!
post
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(fenix.robi @ 29.01.2013, 11:50:37 ) *
Cieszę się ze jest zainteresowanie tym tematem, lecz zdziwiłem się że nie ma w googlu dokładnych rozwiązań, jak myśle na taki prosty problem. Szukam dalej


Szukasz czegoś, co nie istnieje. Tracisz tylko czas.

@pluskwa 10 linijek kodu, zamiast jednej? Curl służy do czego innego niż pobieranie źródła (to że to umożliwia nie znaczy że jest to słuszne).
Go to the top of the page
+Quote Post
fenix.robi
post
Post #12





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Z dedykacją dla:

Cytat(!*! @ 29.01.2013, 11:54:28 ) *
Szukasz czegoś, co nie istnieje. Tracisz tylko czas.


Podstawowe użycie:

Kod
//Po stronie klienta - domena B
<div id="myBox"></div>
<script>
    function doSomething(html) {
        document.getElementById("myBox").innerHTML = html;
    }
    var jsonp = document.createElement('script');
    jsonp.src = 'http://mySecondPage.com/jsonp.php';
    document.body.appendChild(jsonp);
</script>

//po stronie serwera - domena A - plik jsonp.php
<?php
$file = file_get_contents('widget.html');
echo "doSomething('" . str_replace(array("\r", "\n"), array("", ""), $file) . "');";
?>


pomocne linki: JSONP #1, JSONP #2

Oczywiscie to podstawowe użycie, zamiast wysyłać HTML to można zdefiniować tablice z niej json_encode, + odbierać eval i mieć to w jsonie, ja potrzebowałem wysyłać HTML, teraz przerabiam przykład dla moich potrzeb.
Nie wykorzystuję tu nic z HTML5, ale moje założenia zostały spełnione.


BTW:
Cytat(!*!) *
Połącz się przez ajax do php > return file_get_contents() "
Nie chodzi o to ze wykorzytałem file_get_contents(), tylko ze jak miałem się połaczyć z domeny B (nie uzywając żadnych skryptów PHP etc.) do domeny A (tu mogłem wykorzystać PHP) za pomocą ajaxa w tym przypadku nic nie zdziałam

Pozdrawiam

Ten post edytował fenix.robi 29.01.2013, 14:16:03
Go to the top of the page
+Quote Post
!*!
post
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Sprecyzuj na przyszłość o co Ci chodzi a unikniemy nieporozumienia.
Go to the top of the page
+Quote Post
Crozin
post
Post #14





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Rozwiązanie działające wyłącznie po stronie klienta wymagać będzie skorzystania z Cross-origin resource sharing i jest jak najbardziej możliwe. Jest ono lepsze, jeżeli tylko możemy pozwolić sobie na brak wsparcia ze strony starszych przeglądarek.

Ten post edytował Crozin 29.01.2013, 16:20:29
Go to the top of the page
+Quote Post
Tymon34
post
Post #15





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.01.2013

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 29.01.2013, 16:18:20 ) *
Rozwiązanie działające wyłącznie po stronie klienta wymagać będzie skorzystania z Cross-origin resource sharing i jest jak najbardziej możliwe. Jest ono lepsze, jeżeli tylko możemy pozwolić sobie na brak wsparcia ze strony starszych przeglądarek.

Niestety w Polsce mamy jeszcze wielu użytkowników... Internet Explorer 6, nie wspominając o 7 i w wielu przypadkach nieaktualizowanym firefoxie. Znam to z doświadczenia, a prowadzę serwis komputerowy...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 01:15