Cross-domain Ajax request

Tags:    javascript

Hej allesammen!

Jeg er i gang med et Media Framework i JavaScript til at hente Tablature og Lyriks, kaldet Frozen Music.
I forbindelse med det sender jeg et par GET request's til forskellige servere. Når jeg tester koden lokalt, er det ikke muligt i FF, men kun i IE, som jeg efter en Google søgning har konstateret er en sikkerhedsfejl. Men er det kun lokalt det er et problem, eller er det heller ikke muligt når man lægger det op på en Web Server?

Jeg skal egentlig bare vide det for at finde ud af om jeg så må lave et par drivers i forskellige serverside sprog til at hente dataen med. Det ville bare være ærgeligt, da jeg foretrækker at gøre det i JavaScript.

Kom endelig med bud, og prøv da også koden af og giv lidt feedback ;)



Indlæg senest redigeret d. 14.11.2009 00:33 af Bruger #11328
Cross-domain AJAX bør ikke kunne lade sig gøre. Hvis browseren understøtter det er det en sikkerhedsbug i browseren.

Den bedste løsning er at lave et par drivers i et serversidesprog(et enkelt er rigeligt). De drivers kunne så passende outputte JSON.

Hvis frameworket skal kunne bruges på andre sites end dit eget, så kan du lave en bro til dine serverside-drivers på samme server som driversn'e, som så AJAX'er til dem og fylder data ind i det lokale JavaScript derfra.



Du synes altså at parsing af data bør ske på serverside og ikke i JavaScript?



Bestemt nej, men selve GET-requestsne til X antal servere skal ske serverside, eftersom det hverken kan eller bør lade sig gøre med ren AJAX.



Så er vi enige! :)

Har lavet en eks. driver fetch.php
Fold kodeboks ind/udPHP kode 


Men problemet er at URL'en jeg sender er som følger:
driver/fetch.php?url=http://www.lyricsplugin.com/plugin/?artist=Arctic Monkeys&title=505

hvor $_GET['url'], altså burde indeholde hele strengen, men indeholder (selvfølgelig) kun:
http://www.lyricsplugin.com/plugin/?artist=Arctic Monkeys
og $_GET['title'], så indeholder resten.

Nogen foreslag til en løsning?



Du skal lave en encoding af din url parameter, fx urlencode() i php eller tilsvarende i js.

I øvrigt er det muligt at lave cross site XMLHttpRequest i Firefox 3.5 og nyere samt Internet Explorer 8 og nyere (dog med forskellig syntaks) ved at bruge HTTT Access-Control. Jeg ved ikke hvilke versioner af andre browsere, der understøtter det.



Så skulle det være fikset ved hjælp af en simpel PHP driver.

Det ville være rigtig dejligt, hvis nogen gad evt. at prøve koden og lige tjekke syntaxen, og give feedback.
Noget andet jeg mangler er drivers til flere serverside sprog. Da jeg ikke taler .NET ville det være rigtig cool, hvis nogle gad at oversætte fetch.php til .NET



I VB.NET (til brug i ASP.NET):
Fold kodeboks ind/udKode 


Og i C# (også til brug i ASP.NET):
Fold kodeboks ind/udCSharp kode 

Mon ikke du kan bruge det til noget?

MVH/Jeppe.



t