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:
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"?
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
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.
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.
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.
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 !-)
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
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. :|
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.
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.
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 ...
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 :(
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å ...
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 :)
Synes godt om
Ny brugerNybegynder
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.