[JS] JSON Request werkt niet extern

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • unglaublich
  • Registratie: Augustus 2008
  • Laatst online: 30-03 21:26
Een JSON request (met mootools in dit geval) zou toch ook moeten werken met een externe request? Toch werkt onderstaande code alleen als deze op het zelfde domein wordt uitgevoerd. In het NET panel van Firebug zie ik dat er een request gemaakt wordt maar de response is zogenaamd leeg, ga ik zelf naar de url krijg ik wél de JSON request.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("mootools","1.2.3");
</script>
<script>
function loadJSON(){
var jsonRequest = new Request.JSON({url: "http://lsd2010.nl/hyvesrequest/", onSuccess: function(hyver){
    alert(hyver.src[0]); 
}}).get({'username': 'tomlankhorst'});
}
</script>
<span id="holder"><span onclick="loadJSON();">Klik hier om de gegevens te laden...</span></span>

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Je gebruikt de Request van mootools (aanroep via JSON maakt in feite geen verschil voor de werking van Request), Request is gewoon een XMLHttpRequest wrapper.

Dus nee, met XMLHttpRequest kan je niet zomaar een extern URL laden.

[ Voor 16% gewijzigd door DanielG op 03-10-2009 15:27 . Reden: typo, url toevoegen ]

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • unglaublich
  • Registratie: Augustus 2008
  • Laatst online: 30-03 21:26
Hmm.. Okee. Dat is jammer, heb je misschien een idee hoe ik wel externe data kan inladen? Ik heb nu een hele lompe oplossing. Ik laat php gewoon een javascriptje genereren met variabelen en die sluit ik in op de andere site. Beetje lelijk maar het werkt!

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Een Ajax php proxy (beetje wat jij hebt) is juist hoe het gedaan wordt.

Zover ik weet is er geen puur Javascript oplossing om van externe domeinen gegevens te laden.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • NLChris
  • Registratie: Juli 2004
  • Laatst online: 16-09 19:49
JSONP is een manier om dit te omzeilen. Heeft weinig meer met xmlhttprequest te maken, maar het werkt!

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Had nog nooit van JSONP gehoord, maar blijkbaar is dat een soort van same-origin omzeiling d.m.v. een <script> tag te genereren met een externe scr attribuut en zo gebruik te maken van externe (json)data. Slim!

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • unglaublich
  • Registratie: Augustus 2008
  • Laatst online: 30-03 21:26
DanielG schreef op zaterdag 03 oktober 2009 @ 16:11:
Had nog nooit van JSONP gehoord, maar blijkbaar is dat een soort van same-origin omzeiling d.m.v. een <script> tag te genereren met een externe scr attribuut en zo gebruik te maken van externe (json)data. Slim!
Ja dat wat jij omschrijft is ongeveer wat ik gedaan heb. Wat er bij mij nu gebeurt is dat in plaats van een xmlhttprequest wordt er een nieuwe script tag ingevoerd met als source een php file met een querystring. Deze php file stopt dan weer de gegevens in variabelen.

Waarom zijn externe oproepen trouwens niet mogelijk? Via een omweg is het toch alsnog mogelijk.

Acties:
  • 0 Henk 'm!

  • unglaublich
  • Registratie: Augustus 2008
  • Laatst online: 30-03 21:26
DanielG schreef op zaterdag 03 oktober 2009 @ 15:35:
Een Ajax php proxy (beetje wat jij hebt) is juist hoe het gedaan wordt.

Zover ik weet is er geen puur Javascript oplossing om van externe domeinen gegevens te laden.
En dat was bij mij niet mogelijk omdat alleen gewhiteliste domeinen met PHP bruikbaar zijn (google.com enzo)

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

tomlankhorst schreef op zaterdag 03 oktober 2009 @ 18:30:
[...]

Waarom zijn externe oproepen trouwens niet mogelijk? Via een omweg is het toch alsnog mogelijk.
Ik geloof dat externe oproepen in Firefox wel mogelijk waren vanaf 3.0 of 3.5.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NLChris schreef op zaterdag 03 oktober 2009 @ 15:54:
JSONP is een manier om dit te omzeilen. Heeft weinig meer met xmlhttprequest te maken, maar het werkt!
Het werkt. Voor nu. En na de een of andere update werkt je site opeens niet meer. Lekker verstandig om daar op te vertrouwen :X Sowieso zitten er nogal wat haken en ogen aan.
Sebazzz schreef op zaterdag 03 oktober 2009 @ 22:47:
[...]

Ik geloof dat externe oproepen in Firefox wel mogelijk waren vanaf 3.0 of 3.5.
Zeker? Want daarmee omzeil je feitelijk de Same Origin Policy die er natuurlijk niet voor niets is :)

[ Voor 40% gewijzigd door RobIII op 04-10-2009 12:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

RobIII schreef op zondag 04 oktober 2009 @ 12:14:
[...]

Het werkt. Voor nu. En na de een of andere update werkt je site opeens niet meer. Lekker verstandig om daar op te vertrouwen :X Sowieso zitten er nogal wat haken en ogen aan.
Ik denk niet dat cross site script tags met een update zullen verdwijnen. Alle statistieken pakketten maken hier gebruik van, Google host allerlei JS frameworks (YAHOO) trouwens ook.

Acties:
  • 0 Henk 'm!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024

tec

TEC

htaccess mod rewrite met de flag [P] en dan gewoon een fake bestand targetten en onder de motorkap wijs je gewoon naar de externe locatie, gaat hier prima.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

RobIII schreef op zondag 04 oktober 2009 @ 12:14:
[...]

Zeker? Want daarmee omzeil je feitelijk de Same Origin Policy die er natuurlijk niet voor niets is :)
Er stond zoiets bij de featurelist bij één van de Firefox 3.x branch.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
tomlankhorst schreef op zaterdag 03 oktober 2009 @ 18:31:
[...]


En dat was bij mij niet mogelijk omdat alleen gewhiteliste domeinen met PHP bruikbaar zijn (google.com enzo)
Ik heb voor dit soort dingen (geen professionele dingen die in een bedrijf draaien, maar eerder eigen projectjes) gebruik gemaakt van curl. Dit werkte prima. Ik riep gewoon een php bestand aan op mijn eigen server via ajax en die deed een curl request naar de bewuste website die ik nodig had.

Maar aangezien ik het bijna niet terugzie (je hebt natuurlijk wel php nodig + php_curl) vraag ik me af of het veilig, danwel snel is.

[ Voor 11% gewijzigd door armageddon_2k1 op 06-10-2009 07:58 ]

Engineering is like Tetris. Succes disappears and errors accumulate.

Pagina: 1