Greift hier die Cross Site Policity oder nicht?

11/13/2014 08:23 Crossside#1
Hey,
Ich bin gerade dabei einen speziellen Webservice aufbauen zu wollen und bin noch bei der Konzeptentwerfung. Nun stehe ich aber vor dem Problem das ich nicht weiß ob bei dem was ich vorhabe nun die Cross Site Policity eingreift oder ob es möglich ist was ich durchführen möchte (nichts böses).

Folgendes Denkmodell:

Ich habe ein Javascript und dieses packe ich nun in eine Javescript Datei.. nennen wir sie mal MyScript.js.

Meine MyScript.js soll nun auf einer externen Webseite (als Banner) eingebunden werden, und dort Dynamisch Inhalte anzeigen die es sich aus einer weiteren Javascript Datei (nennen wir sie mal Second.js) läd die ich auf meinem Webserver habe.

Zweck des ganzen ist es das ich gerne ein Advertisement Netzwerk nutzen möchte um Anzeigen zu schalten, und hier jedoch meinen Banner Dynamisch machen möchte so das ich ich ihn anpassen und bearbeiten kann ohne jedesmal den Bannercode selbst zu verändern im Kontrollpanel des Advertisement Netzwerkes. Macht mir hier die Cross Site Policity einen Strich durch die Rechnung wenn ich aus der externen Webseite (meine) dann eine JS Datei nachlade? Ich denke leider schon oder?

Ich hätte es ja selbst getestet, aber ich habe zur Zeit noch kein Advertisement Netzwerk + Webserver wo ich das ganze testen kann und bin daher auf Lokale entwicklung meiner Scripte angewiesen bis mein Webserver freigeschalten wird.

Weiß da jemand genaueres drüber ob das ganze klappt?

grüße
11/13/2014 10:22 devcode#2
Ja, sowas wird durch same origin policy verhindert. Jedoch kannst du diese z.B. durch eine htaccess für deine webseite ausschalten.
11/13/2014 10:38 Crossside#3
Quote:
Originally Posted by devcode View Post
Ja, sowas wird durch same origin policy verhindert. Jedoch kannst du diese z.B. durch eine htaccess für deine webseite ausschalten.
Wie soll das gehen?
Da kannst du normal nix mit httacces machen.. weil ich ja nur eine der Webseiten "besitze", und das ist die Webseite von der das .2 Script geladen werden soll.

Zur verdeutlichung..

1) Ich Kaufe mir in einem Advertisement Netzwerk Bannerplätze. Dort kann ich dann ein Bannerbild + HTML / JS Code speichern der für mein Banner benutzt wird. Dieser Banner wird dann Random bei allen möglichen Seiten eingebunden.

2) Nun möchte ich bei meinem Advertisement Netzwerk als Bannercode ein Code hinterlegen der eine weitere JS Datei läd wo ein Text als Variable drinsteht die in dann in meinem Code von Punkt a nutzen möchte.

So wie ich das ganze verstehe -> Damit ich mit .htaccess arbeiten könnte müsste ich aber beide Webseites besitzen, was ja nicht der Fall is... Oder übersehe ich da etwas?
Oder müsste ich die .htacces Datei nur auf meinem Webserver hinterlegen, damit andere Dateien mein Webscript laden können? Wäre aber irgendwie sinnlos da man ja "normal" ohnehin externe JS Dateien einbinden kann? Bin grade etwas verwirrt.. ~

p.s: Ich möchte das ganze nicht per HTTP GET oder AJAX lösen.. auf meinem Server ist wirklich nur eine Javascript Datei die ich einbinden möchte von einer externen Webseite.
Benötige ich hier das ganze überhaupt (htaccess)?

EDIT:

Habe das ganze jetzt mal mit fsdidle.net und meinem Webserver getestet..
Ich habe so wie du es mir empfohlen hast das mit .htacces gemacht.. es klappte.
Jedoch(!) habe ichs auch ohne .htaccess probiert..da klappte es auch.
Jedoch nur wenn mein Script per HTML Code eingebunden ist mit script src, binde ich das Script per javascript direkt ein gehts wieder nicht mehr...grml^^
Komische Sache..

grüße
11/13/2014 10:56 devcode#4
Ok jetzt versteh ich das ganze etwas besser :D So wie es sich liest, brauchst du garnichts zu machen, da das ganze normal funktioniert.

Die htaccess bezog sich wirklich auf ein HTTP request, den du ja scheinbar nicht machst.
11/13/2014 11:10 Crossside#5
Quote:
Originally Posted by devcode View Post
Ok jetzt versteh ich das ganze etwas besser :D So wie es sich liest, brauchst du garnichts zu machen, da das ganze normal funktioniert.

Die htaccess bezog sich wirklich auf ein HTTP request, den du ja scheinbar nicht machst.
Das komische ist jetzt nur das es funktioniert wenn ich das externe Script auf meiner Webseite per

Code:
<script src="meinewebseite.com/MyScript.js"></script>
einbinde.. aber nicht wenn ich es per..

Code:
var list_loader = document.createElement('script');
list_loader.setAttribute('src', "http://meinewebseite.com/MyScript.js");
document.getElementsByTagName('head')[0].appendChild(list_loader);
einbinde..

Gibt es da irgendwelche Sicherheitsmechanismen die da bei der 2. Art nen Riegel vorschieben? Kenne eigendlich nichts was da ein unterschied machen dürfte.. ist ja sogesehen beides das selbe EneErgebniss..hm

Gut.. Zur Not könnte ich das script src sicherlich auch direkt in den Bannercode schmeißen, dürfte auch gehen schätze ich.. hm.

grüße & danke^^
11/13/2014 11:13 devcode#6
Bei mir klappt es. Steht was in der Konsole?

//Edit: Hast eine PN
11/13/2014 11:24 Crossside#7
Quote:
Originally Posted by devcode View Post
Bei mir klappt es. Steht was in der Konsole?
Leider nicht, nein.
Es passiert einfach garnichts, so als hätte er das ganze nicht laden können und als würde dadurch das Haupt-Script gecrasht werden.

Habs jetzt mal mit Dropbox + Meine Webserver probiert..quasi 2 Webserver.
Jetzt zeigts mir in der Console an das die Variable die auf dem anderm Server liegen sollte nicht gefunden wurde.. heißt das beim laden der Externen Javascript Datei oder dem einbinden was schief gegangen sein muss..hm

grüße
11/13/2014 11:41 devcode#8
Was passiert denn, wenn du in die 2te Datei nur ein console.log() oder alert() ausgibst? Vielleicht kannst du uns ja mal einen Teil deiner 2ten Datei zuschicken :) Gerne auch über PN.
11/13/2014 11:48 Crossside#9
Quote:
Originally Posted by devcode View Post
Was passiert denn, wenn du in die 2te Datei nur ein console.log() oder alert() ausgibst? Vielleicht kannst du uns ja mal einen Teil deiner 2ten Datei zuschicken :) Gerne auch über PN.
Die 2. Datei ist lediglich ein

Code:
var hello = new Array();
hello[0] = "Hello 1";
hello[1] = "Hello 2";
mehr ises nicht^^

Und auf dieses Array möchte ich quasi von der anderen 1. Javascript Datei Zugreifen, beide Javascript Dateien liegen aber auf unterschiedlichen Webservern. Die 1. Javascript Datei liegt auf dem Advertisement Netzwerk, und meine 2. (siehe oben) auf meinem eigenen Webserver.

Versuche ich die oben stehende Javascript Datei nun mit einem

Code:
document.head.innerHTML='<script src="'+customer_url+'"></script>'+document.head.innerHTML;
oder einem

Code:
var list_loader = document.createElement('script');
list_loader.setAttribute('src', customer_url); //customer_url = Link zu Js-Datei mit dem Array drine
document.getElementsByTagName('head')[0].appendChild(list_loader);
einzubinden in der 1. Javascript Datei funktioniert es nicht.. da sagt es mir das es das Array was ich oben habe nicht gefunden hat. Ich könnte mir nun vorstellen das des ganze ein Timing Problem ist weil er eventuell noch nicht alle Inhalte (meine 2. Javascript Datei) geladen hat und er deshalb rumzickt, jedoch klappt es auch nicht wenn ich das ganze per onload aufrufen lasse.
Wenn ich anstelle des Arrays nur ein alert(0) reinpacke passiert garnichts, daher schätze ich das es nicht klappt die Datei zu laden. Wobei das ganze aber Lokal auf meinem Rechner funktioniert..
Irgendwas ist da nicht ganz Koscher :D

Bin langsam echt überfragt..
Und das obwohl ich so gut wie Täglich sehr viel mit Javascript scripte.


EDIT: Was ist das für nen komischer Crap..
Liegt meine 1. JS Datei auf Dropbox und mein 2. JS Datei auf meinem Webserver gehts nicht.. andersrum gehts (wenn ichs per Script Tag einbinde,nicht so wie ichs eig wollte)..


grüße
11/13/2014 12:22 devcode#10
Also dieser Code geht bei mir, auch auf jsfiddle:

Code:
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "http://extern-server/script2.js";
document.body.appendChild(js);

window.onload = function() {
    console.log( hello );
};
11/13/2014 12:40 Crossside#11
Quote:
Originally Posted by devcode View Post
Also dieser Code geht bei mir, auch auf jsfiddle:

Code:
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "http://extern-server/script2.js";
document.body.appendChild(js);

window.onload = function() {
    console.log( hello );
};
Ich teste es mal danke.. Habe bei JSFiddle jetzt mal OnLoad mit OnDomReady umgestellt und jetzt scheint es mit deinem Script zu funktionieren.. fragt sich was da noch von Seitens JSFiddle für Code reingeknallt wird von dem ich nix weiß der das ganze beeinflusst.. mal schauen ob es mit Dropbox + Meinem Webserver klappt auf diesem Weg. Danke schonmal für die bisherige Hilfe :)!

p.s: Klappt nicht.. :/ Verzweifle langsam wirklich, werde mich jetzt mal nach nem richtigen 2. Webserver umsehen um zu testen obs nicht irgendwie an Dropbox oder so liegt..
Möchte nicht unnötig mir den Kopf zerbrechen wenns am Ende an Dropbox o.ä liegt.

grüße
11/13/2014 12:46 devcode#12
// edit: mal eine frage: wo packst du dein script rein? in den <head> oder vor </body>?
11/13/2014 13:02 Crossside#13
Quote:
Originally Posted by devcode View Post
// edit: mal eine frage: wo packst du dein script rein? in den <head> oder vor </body>?
So ->
Code:
<html>
 <head>
  <script src="./script1.js"></script>
 </head>

 <body>
 [...]
 </body>
</html>
11/13/2014 13:04 devcode#14
Sowas sollte in der Regel immer vor dem </body> rein :) Versuch es mal.
11/13/2014 13:06 Crossside#15
Quote:
Originally Posted by devcode View Post
Sowas sollte in der Regel immer vor dem </body> rein :) Versuch es mal.
Ist doch im Head und somit vor dem Body..?