Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] XmlHttp.Open z innego serwera ?
freqfreq
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 8.01.2008

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


Domeny a i b.
W domenie a mam skrypt php wrzucający dane przesłane mu poprzez GET do bazy MySQL.
W domenia b (i wielu innych) user ma na swojej stronie <script type="text/javascript" src="PLIK JS W DOMENIE A"></script>
W owym pliku JS znajduje się funkcja która pobiera x i y kliknięcia myszką i przesyła je (wraz z jeszcze paroma innymi zmiennymi) metodą XmlHttp do skryptu php w domenie a. Sposób ten jednakże nie działa z powodu znanego nam zabezpieczenia w AJAXie.
Czy istnieje teraz jakiś sposób na to aby powyższy skrypt działał? (user w domenie b nie może mieć żadnych moich skryptów na swoim serwerze, on ma tylko wstawiać linijkę ze <script> i tyle)

Pozdrawiam! (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
sennin
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 8.03.2007

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


W domenie b odsylaj wspolrzedne do pliku php w tej samej domenie i dopiero z tego pliku php łącz się z domeną a. Ewentualnie możesz spróbować tak: Stwórz ukrytą ramkę iframe z kilkoma polami input hidden. Zawartosc tej ramki niech bedzie na serwerze w domenie A. Po kliknieciu myszka ustaw wspolrzedne w polach ukrytych hidden i wykonaj submit na formularzu w ukrytym iframe. Wtedy dane pojda do serwera w domenie A.
Go to the top of the page
+Quote Post
freqfreq
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 8.01.2008

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


w domenie b nie ma prawa być żadnych "moich" plików php (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Rozwiązałem to stosując
function przyklad(){
var img = new Image(1,1);
img.src = "http://domena.a/plik.w.domenie.a?zmienna1=" + zmienna1 + "&zmienna2=" + zmienna2; }

btw, Na tym forum na odpowiedzi przynajmniej z tego tematu czeka się godzinami w czasie w którym na innych miałem już tuziny odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował freqfreq 6.04.2008, 12:59:03
Go to the top of the page
+Quote Post
micheal.
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.07.2009

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


HEj!

może mi ktoś powiedzieć, jak po tym zabiegu ->

Cytat(freqfreq @ 6.04.2008, 13:58:21 ) *
function przyklad(){
var img = new Image(1,1);
img.src = "http://domena.a/plik.w.domenie.a?zmienna1=" + zmienna1 + "&zmienna2=" + zmienna2; }


-> dalej powinno się przetworzyć te odebrane dane ze skryptu z innego serwera,
aby można było ich użyć?

pozdro
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przez obrazek? Niestety, nie da się tak. ;]

Jeśli chcesz mieć obsługę międzydomenową - pozostaje albo proxy, albo XmlHttpRequest we Flashu, albo JSONP.
Go to the top of the page
+Quote Post
micheal.
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.07.2009

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


Elo,

jeśli ktoś jeszcze jest zainteresowany międzydomenową wymianą danych (czyli tworzeniem aplikacji WEB N.0 (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) ) (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif)

http://json.org/JSONRequest.html

btw, wiecie coś na temat obsługi obiektu JSONRequest przez przegladarki? Nie ma kłopotów z kompatybilnością?

pozdro
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No to pisałem przecież o JSONP. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Nie ma, gdyż polega to na wywołaniu odpowiedniej funkcji, przez bodajże dodanie do dokumentu nowego znacznika <script />. Jednak nie zmienia to faktu, że danych POST tak nie wyślesz. GET, to nawet obrazkiem żądanie pójdzie, gdy nie potrzebujesz danych potwierdzenia.
Go to the top of the page
+Quote Post
micheal.
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.07.2009

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


Tak, już zrobiłem mały research, i oto co znalazłem: (dla takich ludzi jak ja, którzy szukają tu również informacji, a czasami jedyną odpowiedzią są jakieś tajemnicze akronimy (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) w końcu edukacja kosztuje (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )


http://www.ibm.com/developerworks/library/wa-aj-jsonp1/
http://james.padolsey.com/javascript/cross...ith-jsonp-safe/
http://beebole.com/en/blog/general/sandbox...ashup-security/
http://ajaxian.com/archives/prototype-exte...pattern-support

Samo włączenie skryptu z innej domeny wygląda tak:


  1. <script type="text/javascript">
  2. function startJSONP()
  3. {
  4. var script = document.createElement( 'script' );
  5. script.setAttribute( 'type', 'text/javascript' );
  6. script.setAttribute( 'src', 'http://innadomena/skrypt?argumenty' );
  7. document.getElementsByTagName( 'head' )[0].appendChild( script );
  8. }



Teraz szukam odpowiedzi jak dokładnie włączyć w to obsługę callbacks. Wie ktoś?
(IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Teraz szukam odpowiedzi jak dokładnie włączyć w to obsługę callbacks.

Nie pamiętam, jak to było w jQuery, ale skrypt był chyba wpisywany jako innerHTML tagu script i na końcu po prostu dodawane wywołanie danej funkcji.

Stuprocentowej pewności nie ma, mogą być obostrzenia ze względu na bezpieczeństwo, ale spróbować możesz. [;

Cytat
Samo włączenie skryptu z innej domeny wygląda tak:

To NIE JEST włączenie, a OBEJŚCIE problemu, bo np. żądania POST tak nie wykonasz.
Go to the top of the page
+Quote Post
micheal.
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.07.2009

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


W takim razie wskaż rozwiązanie, JEZELI znasz, bo z TEGO, co wiem, to jest JEDYNY sposób na wymianę danych cross domain. W Ajaksie obostrzenia ze względu na bezpieczeństwo utrzymują zasadę same domain.

Btw, to OBEJŚCIE problemu jest ogólnie akceptowane.

pozdr (IMG:http://forum.php.pl/style_emoticons/default/withstupidsmiley.gif)
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
to jest JEDYNY sposób na wymianę danych cross domain

Czytałeś moje poprzednie posty? #5

Cytat

Niestety, nie ma emota I'm with blind.
Go to the top of the page
+Quote Post
zegarek84
post
Post #12





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(micheal. @ 28.07.2009, 16:02:31 ) *
Teraz szukam odpowiedzi jak dokładnie włączyć w to obsługę callbacks. Wie ktoś?
(IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
mi to nie było potrzebne ale z tej strony wynika, że do wykrycia czy obiekt został pobrany można normalnie urzyć zdarzenie onload:
Howto Dynamically Insert Javascript And CSS

ps.
jakąś zmienną możesz traktować jako kontener i po załadowaniu jej danych do innych zmiennych lub całego obiektu poprostu ją usuwać - pobierając dane w formacie json mogą być np. odrazu przypisane do tej zmiennej by nie były zawieszone w prużni gdy będziesz dołączał nowy element DOM <script> - po wykryciu zdarzenia onload (które najwidoczniej działa) uruchamiasz funkcję która wykona operacje na odebranych danych zczytując otrzymany obiekt (potem obiekt możesz skasować) i wywołując odpowiednie operacje...

lub możesz nie przypisywać tego do zmiennej a pobrać z drzewa dom po załądowaniu dany element po czym odczytać jako tekst jego zawartość i zrobić z tym co tylko chcesz... ogólnie zależy jaki mechanizm chcesz obrać i jak to zabezpieczyć...

Ten post edytował zegarek84 28.07.2009, 23:28:00
Go to the top of the page
+Quote Post
micheal.
post
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.07.2009

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


@erix
Czytałem twoje posty, ale dla mnie pozostaje tylko JSONP i dynamiczne wstawianie skryptów. PHP proxy też odpada, bo to ma być aplikacja desktopowa (Adobe AIR), a Flash za bardzo kojarzy mi się z angielskim wyrażeniem TO FLUSH (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

Dzięki zegarek za tego linka, nie czytałem jeszcze całego artykułu, ale z tego co widzę to będzie dobry
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: 20.12.2025 - 22:55