Avatar billede pyroman Nybegynder
02. marts 2004 - 16:54 Der er 6 kommentarer og
1 løsning

crossdomain.xml og linux

Hejsa!!

Jep tilbage igen - kan ikke gøre for det...

Jeg er igang med at lave denne hersens chat. Til dette har jeg en JAVA-serversocket som ligger på server A og en flash klient på server B.
For at få flashen på B til at kommunikere med A bruger jeg en crossdomain.xml-fil på denne.
Dette virker fint på windows, jeg kan godt logge ind - men linux kan ikke!
Linux versionen af flashplayeren er v. 6 - den nyeste - ved ikke om det betyder noget...

Kan man gøre noget ved det eller må man leve med at linux-brugere ikke må chatte?

/Filip
Avatar billede barklund Nybegynder
03. marts 2004 - 01:11 #1
Hm, det er forskellige connect modeller rundt omkring i de forskellige playere. Crossdomain.xml er til Flash7 playeren. Til flash 6 playeren var der validering på domænet og domænet kun - ingen crossdomain ting her.

I stedet skal du bruge en shim swf - som macromedia kalder det. En lille swf fil på domæne B (hvor din socket server bor) som din swf på domæne A loader ind. Tilladelserne skal foregå via System.security.allowDomain("www.a.dk");

Dette skal ligge i både swf på a.dk og b.dk... For at du så kan lave socket connection til b.dk, skal du lave den i din shim swf - altså selve my_socket.connect scriptet ligger i shim swf på b.dk - resten kan godt lægge på a.dk.

Håber du forstår - det er ikke nemt. Derfor har jeg altid lavet det via sudbomæner - brug socket.a.dk til at vær een DNS forward til din server på b.dk - det er nemmest og virker med det samme.

Har du forresten set den nyeste crossdomain metode i 7,0,19,0? Det er smart - man kan endda læse crossdomain via xmlsocket samt lave socket connections UNDER port 1024!

// Morten Barklund
Avatar billede pyroman Nybegynder
03. marts 2004 - 18:12 #2
Ohh Morten! du har da også svar på alt!! Havde sådan set ikke forventet nogen løsning på dette - for jeg havde jo hørt om den der crossdomain.xml løsning og troede det var den eneste...

Jeg forstår faktisk ikke helt:

- Jeg kan ikke se hvorfor fanden en swf-fil på serveren skulle have indflydelse på klienten eller java'en... men det er jo nok bare macromedia når de er bedst...
- Skal shim-filen hedde noget bestemt? fx shim.swf?
- Shim'en, skal det bare være en tom swf-fil kun med den der System.security.allowDomain(); - kode? eller er der andet man skal sørge for?

Hvis jeg ikke kan få det til at virke, så må du meget gerne forklare hvordan du gør det med det der DNS forward halløj... men ser lige om det dur...

Nej jeg har ikke set andre udgaver af crossdomain-fis end den du har beskrevet her og så den med crossdomain.xml metoden som du viste mig her: http://www.eksperten.dk/spm/445866

Men SUPER mange tak indtil videre!!!!
Avatar billede barklund Nybegynder
03. marts 2004 - 18:51 #3
Player 7r19 kan loade crossdomain filer med vilkårligt navn fra vilkårlig sti:

http://www.macromedia.com/support/documentation/en/flashplayer/7/releasenotes.html
http://www.macromedia.com/devnet/mx/flash/articles/fplayer_security.html

Men tilbage til player 6 (i hvert fald mellem 6r0 og 6r79).

Din shim swf er bare en helt almindelig swf. Den kan ligge hvor som helst og loades med et almindelig loadMovie kald. For at loadMovie er tilladt på tværs af domæner, skal man bruge System.security.allowDomain(). Efter du har lavet loadMovie må den oprindelige fil kalde funktioner i din loadede shim swf, som igen nu har tilladelse til at lave en socket connection til "eget" domæne. Din shim skal altså instantiere og connecte på din socket - den kan så bare sende det tilbage til din hovedfil. Altså i shim.swf på b.dk:

System.security.allowDomain("www.a.dk");
var my_socket = new XMLSocket();
function openSocket(host, port, on_xml, on_connect, on_close) {
    my_socket.onXML = on_xml;
    my_socket.onConnect = on_connect;
    my_socket.onClose = on_close;
    my_socket.connect(host, port);
}
function closeSocket() {
    my_socket.close();
}

I main.swf på a.dk:

System.security.allowDomain("www.b.dk");
function onXML(xml) {};
function onConnect(s) {};
function onClose(s) {};
loadMovieNum("http://www.b.dk/shim.swf", 1);
// vent på load
_level1.openSocket("b.dk", 12345, onXML, onConnect, onClose);

Det er i hvert fald en start - prøv om ikke det virker ;)

// Morten Barklund
Avatar billede pyroman Nybegynder
10. maj 2004 - 23:12 #4
morten - du må sgu undskylde at jeg helt havde glemt det her spørgsmål... Jeg har ikke haft undersøgt om det virker endnu (doh!) - men jeg stoler på dig ;) - har også fundet andre artikler om det på nettet nu..

Såå - smid et svar så jeg kan få dette spm af vejen :)
Avatar billede barklund Nybegynder
23. maj 2004 - 16:41 #5
Husk at lukke :)
Avatar billede pyroman Nybegynder
05. august 2004 - 19:07 #6
Hmm jeg synes altså at jeg ha lukket det her spm én gang før... :S

Well - nu lukker jeg sgu...
Avatar billede barklund Nybegynder
19. august 2004 - 02:28 #7
Wee, tark for points :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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