Avatar billede styrk Nybegynder
20. maj 2008 - 19:58 Der er 11 kommentarer

ajax fra domæne til domæne

hejsa.

Jeg har et website som benytter sig af subdomains som opbygning, f.eks er der et domæne "forum.domæne.dk", "my.domæne.dk" og self normalen "www.domæne.dk" som forsiden, jeg har så noget ajax som skal læse noget forskelligt info over de forskellige domæner,- men her kommer firefox og giver mig en permission error som umiddelbart ikke kan ordnes.

Jeg har læst lidt rundt omkring at det kan løses med mod_rewrite men jeg har ikke kunne finde nogle forslag på løsningen endnu, derfor spørger jeg her.

Jeg køret et ajax script på forum.domæne.dk som skal loade noget info fra my.domæne.dk, lad os bare kalde den userinfo.php

Nogen som kan hjælpe?

Mvh. Rasmus
Avatar billede softspot Forsker
20. maj 2008 - 21:33 #1
Nu er jeg ikke PHP-kyndig, men kan du ikke bare lave en proxy på det domæne der skal kaldes fra til det domæne der skal kaldes til og så få fat i det andet domæne via serveren. Dvs. i stedet for at kalde det andet subdomæne direkte fra klienten kalder klienten en side på samme domæne, der så, fra serveren, kalder siden på det andet domæne. Jeg mener "rettighedsproblemet" er en "klientfeature" og at serveren gerne på hente data fra andre domæner...
Avatar billede styrk Nybegynder
20. maj 2008 - 21:50 #2
det er nemlig en klientfeature som jeg skal se om jeg kan omgå på en måde :p

jeg forstår dog ikke hvorfor det ikke er lovligt at sende/hente information ved subdomains, det er jo egentlig samme domæne.
Avatar billede olebole Juniormester
20. maj 2008 - 22:30 #3
<ole>

Drop at finde en klientløsning. Du skal ud i en kombination af nestede iframes - med document.domain sat - og XMLHttpRequest, hvis det skal virke nogenlunde crossbrowser.

Den eneste fornuftige løsning er - som softspot skriver - at kalde din egen server. Derefter lader du dén hente data fra det andet subdomæne - og returnerer dem til klienten.

Hvad angår subdomains og 'same origin policy', så læs:
    http://www.mozilla.org/projects/security/components/same-origin.html

/mvh
</bole>
Avatar billede olebole Juniormester
20. maj 2008 - 22:33 #4
I stedet for cross-domain-scripting, burde man egentlig tale om cross-host-scripting. Du kan f.eks. heller ikke på http://www.domain.dk hente data http://123.123.12.123 - selvom de to adresser peger på samme site ... det sidste blot med IP'en  =)
Avatar billede olebole Juniormester
20. maj 2008 - 22:34 #5
Der manglede et 'fra':
    "Du kan f.eks. heller ikke på http://www.domain.dk hente data fra http://123.123.12.123"
Avatar billede roenving Novice
21. maj 2008 - 16:58 #6
Men man kan sætte underdomæne-dokumenter til at tro, at de tilhører et overdomæne, i ovenstående eksempel, skal man på alle dokumenter fra forum- og my.domæne.dk indsætte:

<script type="text/javascript">
document.domain = "domæne.dk";
</script>

-- hvilket vil betyde, at du kan indlæse og køre scripts på tværs af disse domæner, men om ikke ajax-kaldet alligevel vil blive afvist må komme an på en prøve !-)
Avatar billede styrk Nybegynder
21. maj 2008 - 21:04 #7
Jeg har forsøgt at sætte document.domain til hoveddomænet i forum.domæne.dk, men jeg får stadigvæk Permission denied to call method XMLHttpRequest.open når jeg prøver at hente info fra usersinfo.php på domæne.dk

æv :s
Avatar billede roenving Novice
23. maj 2008 - 14:11 #8
Ja, øv, det skulle efter min forståelse ikke være skævt, men w3cs ajax-ting, som forbyder cross-domain-ting tager nok ikke højde for det !-)
Avatar billede olebole Juniormester
23. maj 2008 - 16:40 #9
document.domain er netop nævnt bag det link, jeg viste i mit forrige indlæg, men der skal som sagt iframes til at løse problematikken ved XMLHttpRequests, dersom det ønskes løst på klienten. Oven i købet skal der flere nestede iframes til, før det kan lykkes. Derfor er proxy løsningen den realistiske  ;o)
Avatar billede styrk Nybegynder
23. maj 2008 - 17:30 #10
Har du et link i baglommen til et proxy foreslag? ;-) eller skal jeg virkelig til at søge på google? tsk tsk!
Avatar billede olebole Juniormester
23. maj 2008 - 22:05 #11
Du retter bare en XMLHttpRequest mod dit eget site. Her kalder dit PHP dokument dokumentet på det andet subdomain via en socket:
    http://dk2.php.net/manual/en/function.fsockopen.php

- og sender så responsen tilbage til klienten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester