Avatar billede zarya Nybegynder
03. august 2004 - 10:55 Der er 21 kommentarer

Frame til frame - 2 domains

Jeg har et "main" frame som har noget indhold fra et andet domain end hvad selve siden og "menu" framet ligger på.

Da jeg skal enten se hvilken path som der i framet, etc. http://mitdomain.dk/den/her/sti/skal/jeg/vide
der skal jeg se kunne se "den/her/sti/skal/jeg/vide" i menu framet eller fra menu framet skal jeg kunne kalde et javascript fra "main", problemet ligger i at de ikke er i samme domain, så det eneste jeg får er "Adgang nægtet".

Har prøvet at rode lidt med p3p på den server hvor "main" framet står, men uden større held:

<EXTENSION>
      <OUR-HOST name="*.mitdomain.dk" />     
</EXTENSION>


Det er meget muligt at jeg har sat p3p forkert op, eller at p3p slet ikke virker i dette tilfælde (har ikke sat mig så meget ind i dette), men har fulgt eksemplet på http://www.w3.org/P3P/2004/03-domain-relationships.html

Så spørgsmålet er simpelt, hvordan kan man kalde et javascript i et frame fra et andet domain uden at få "Adgang nægtet"?
Avatar billede nikolajdu Nybegynder
03. august 2004 - 12:32 #1
Du skal ikke forsøge at kalde noget på f.eks mit domæne. ;-) Det er jo en sikkerhedsforanstaltning.

Har du adgang til begge domæner kan du skifte url med tilhørende parametre og så på den måde lave en modtager funktion der undersøger urlen og afvikler indhold derefter.

Altså i stilen www.andetDomæne.dk?variabel1=nyting&variabel2=hej
Avatar billede zarya Nybegynder
03. august 2004 - 12:38 #2
Jeg har ikke rigtigt adgang til begge domæner, men problemet ligger i at jeg skal kunne kalde det fra et andet domæne, da det der er i "main" framet er noget extern hostet. Men da det er en sikkerhedsfaktor at man ikke kan kalde noget fra et andet frame som standard, gik jeg udfra at p3p ville kunne klare dette, da det kan håndtere cookies fra et andet domæne (etc. du har framet http://ditdomain.dk ind og siden bliver vist på http://ditdomain2.dk så vil cookies i framet ikke virke med mindre du sætter p3p op på serveren)

Det forslag som du kommer med vil ikke fungere, da jeg skal validere noget af indholdet i "main" framet inden jeg skifter videre. Så hvis en bruger klikker i "top" framet, så skal "top" framet validere noget af indholdet i "main" før brugeren må gå videre.
Avatar billede roenving Novice
03. august 2004 - 14:41 #3
Så må du indsætte indholdet ved at hente det på serveren !-)
Avatar billede zarya Nybegynder
03. august 2004 - 14:43 #4
Det er så bare ikke en holdbar løsning? :(

Det må da være muligt at kunne "give" adgang til et andet domain, ligesom man kan med Cookies via p3p.

:|
Avatar billede roenving Novice
03. august 2004 - 14:54 #5
Såvidt jeg ved er javascript ultimativ på dette område (og også omkring læsning af cookies !-)
Avatar billede zarya Nybegynder
03. august 2004 - 14:59 #6
Jeg bruger ikke cookies i javascript, men hvis du bruger serversite cookies (jeg bruger cookies fra .NET) der kan jeg styre om cookien må skrives (stadig i mit frame, men...) fra et andet domain. Problemet er at cookien / javascriptet kigger på det domaine der står i din adresse linie i din browser, og derfor skal den siden have accept fra serveren (headeren på siden) om dette domaine har ret til at skrive / læse cookien. Derfor troede jeg også at man kunne gøre det samme med javascripts.
Det behøver ikke at være at jeg skal kalde et javascript, jeg skal bare kunne finde path'en på det indhold der er i framet, da man også kan navigere direkte rundt i "main" framet og ikke behøver at gå gennem "menu" framet.
Avatar billede roenving Novice
03. august 2004 - 15:09 #7
Men Nikolaj lægger jo egentlig et godt eksempel i den allerførste linje, så vi er ude i noget, som ikke kan klares client-side ...

Medmindre du kan bruge den oplysning, at brugeren er røget udenfor dit eget domæne, til noget, for den kan vi sagtens fange med en try-catch-blok !-)
Avatar billede zarya Nybegynder
03. august 2004 - 15:19 #8
Prøver at beskrive det lidt bedre så... ellers er det mig der ikke har forstået eksemplet...

Vi har et top frame der indeholder en menu, og et main frame hvor i der er noget fra hosten selv (den der hoster siden inkl. menu).

Vi navigere nu ind i noget der bliver hostet på et andet domaine og navigere videre til en side hvor hvis man går væk fra den skal der komme en popup op og advare brugere omkring at han er ved at afbryde dette.

Da dette skal ske FØR brugeren bliver navigeret videre, havde jeg tænkt mig at menuen skulle validere eller kalde et javascript fra main framet for at checke om denne advarsels popup skulle komme op. Men da jeg hverken kan finde hvilken path framet kører på (og jeg kan ikke tage hvad der sidst er trykket på i menuen, da man også kan navigere via "main" framet) eller kalde et javascript i "main" framet fra top pga. "Adgang nægtet" pga. krydsende domainer, så er jeg lidt på herrens mark.
Avatar billede roenving Novice
03. august 2004 - 15:26 #9
Nikolaj skriver: "Du skal ikke forsøge at kalde noget på f.eks mit domæne" ...

Den sikkerhed er ultimativ, så Nikolaj kan få lov til at beholde sit indhold uden at du laver om på det, og f.eks. ændrer links eller skriver obskønne ting ...

-- det eneste tilfælde, hvor der ikke er problemer er, hvis begge dokumenter ligger på forskellige underdomæner, f.eks. www.bruger.ditdomaine.dk og www.admin.ditdomaine.dk, så kan man sætte document.domain="ditdomaine.dk" i begge dokumenter og opnå, at du kan scripte på tværs !-)
Avatar billede zarya Nybegynder
03. august 2004 - 15:35 #10
Jeg kan godt se at der er sikkerhed på spil der, men hvis der er trust til begge domainer må det også være muligt at cross linke ved at give "adgang" til det andet domain, så det kan kalde etc et javascript i det første domain, fordi det første domain har givet adgang til dette.

Problemet ligger i at det ikke kommer til at ligge på samme domain, så det kommer ikke til at kunne lade sig gøre at det er subs af det samme domaine.

Det kan være det er mig der stirer mig blind i det, da jeg sammen ligner det med den løsning jeg kører med p3p og cookies, hvor jeg giver et andet domaine adgang til at frame mit site ind og stadig give adgang til at oprette eller læse de cookies som bliver brugt i framet
Avatar billede roenving Novice
03. august 2004 - 15:41 #11
-- kan du ikke kontrollere indholdet af den sider, som hostes ude i byen ?-)

-- fordi det er nok den eneste holdbare løsning, så ...
Avatar billede zarya Nybegynder
03. august 2004 - 15:45 #12
Jeg kan godt kontrollere indholdet, intet problem der. Problemet ligger i at der kun skal komme en popup box hvis brugeren trykker væk fra siden via menu'en (dvs klikker i det andet frame). Derfor er det ikke nok at kontrollere indholdet(det er ikke fordi det skal valideres om det er rigtigt, men om hvad for en side der vises) så jeg kan styre om der kommer en popup når brugere klikker sig videre eller om brugere skal navigers videre med det samme. :|
Avatar billede roenving Novice
03. august 2004 - 16:13 #13
Kan du ikke bare lave onunload i framen ?-)
Avatar billede zarya Nybegynder
03. august 2004 - 16:15 #14
Troede jeg også i starten, og jo det kan man godt, meeeeeeen der er nogle links hvor hele siden refresher når man trykker i menu'en (ikke mig der står for menu'en, men er med til den, men har ikke indflydelse som sådan på den)

Dvs onunload har været oppe og vende, testet og virkede, lige indtil det blev testet i deres frame, så gik den ikke længere.
Avatar billede roenving Novice
03. august 2004 - 16:29 #15
Måske kan I prøve med at forsøge at skifte frame-indholdet lige før ?-)
Avatar billede zarya Nybegynder
03. august 2004 - 16:32 #16
Hvordan skifte?

Altså der skal komme en popup med et "Du er er ved at afbryde denne process bla. bla. bla..., er du sikker på at du vil afbryde.

Ok - Annuller"

Og når man så trykker på Annuller så går den ikke videre, utroligt simpelt at lave, hvis jeg enten kan kontakte et javascript i "main" frame eller hvis jeg kender den url'en der vises i "main" framet.
Avatar billede zarya Nybegynder
04. august 2004 - 14:43 #17
Ingen der har nogle løsningsforslag?
Avatar billede roenving Novice
04. august 2004 - 14:48 #18
Jeg tror faktisk vi er helt tilbage ved nikolajs første kommentar, desværre ,-(

Sikkerhedsproblematikken er det ikke muligt at tilsidesætte i moderne browsere (NN4 havde noget 'trusted scripts'-noget, som måske nok kunne have gjort det !-)

-- og jeg går ud fra, at du ikke vil forsøge at intercepte med en eller anden windows-installeret .exe-fil, som du får brugerne til at installere ...

-- som jeg i øvrigt heller ikke ved om det er muligt at lave, men det går jeg da ud fra ...
Avatar billede zarya Nybegynder
04. august 2004 - 14:55 #19
Ikke lige det svar jeg ønskede at høre :)

Forstår bare ikke hvor sikkerhedsproblemet ligger henne?
At jeg som hoster vil give "outer" framet adgang, fordi det er trusted fra min side af, til at de kan kalde det som er hostet hos mig, fordi jeg truster dem og de betaler for det :)

For brugerens synspunkt burde det ikke være noget større, om det er 2 domains det står på, eller om det er 1 kan vel være lige meget for brugeren, eller mig der misforstår noget her?

Kan slet ikke lure stemningen over at det skal være så svært :(
Avatar billede roenving Novice
04. august 2004 - 15:08 #20
Fordi det skal udføres med javascript, og ecma-script-/html-standarden udtrykkeligt forbyder den slags, er der simpelthen ikke nogen metoder, hvorpå du kan fortælle browseren, at der er et bestemt domæne, du tror på ...
Avatar billede zarya Nybegynder
04. august 2004 - 15:11 #21
Hmm der kan man bare se... så var det mig der ikke forstod det helt...
Det er jo så knap så fedt.... hmm så må jeg jo gå en tur i tænke boks....
Bare underligt at man ikke engang kan finde det url som det frame man har på sin egen side har.
Altså hvad er content af framet, dette er tilgængeligt hvis man er på samme domain, men ikke hvis det er 2 domains, yderst fjollet :)
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