Jump to content
Froxlor Forum
  • 0

nginx add_header 'Access-Control-Allow-Origin' - mehrere Domain angeben funktioniert nicht


Question

Posted

Hallo d00p!

Ich möchte den Content-Security-Header "Access-Control-Allow-Origin" mit mehreren Domains setzen. Das geht aber offenbar gar nicht - oder doch? Die Developer-Konsole im Browser sagt "multiple domains not allowed" wenn ich diesen Eintrag einfüge:

add_header Access-Control-Allow-Origin "https://domain.com https://www.domain.com";

Das Blöde ist, dass Skriptaufrufe mit domain.com hardcoded sind, d.h. bei www-Domain Aufruf werden diese von der Content-Security-Policy gekillt.

DIE Lösung wäre es wenn ich eine direkte Weiterleitung von www.domain.com auf domain.com setzen könnte. Dazu müsste ich einen zusätzlichen www-vHost anlegen (momentan läuft nur ein vHost mit www-Alias). Allerdings hatte ich mit dieser Lösung Probleme beim automatischen Update der Lets Encrypt-Zertifikate.

Hab ich mich soweit verständlich ausgedrückt? 😉

Hast Du ev. einen Tipp wie ich das Problem mit Froxlor lösen kann? Einerseits ist das Thema "Access-Control-Allow-Origin multiple Domains nginx" etwas off topic - andererseits nicht, da ich das Problem nur mit Froxlor lösen sollte und nicht etwas zu Fuß schnitzen will.

 

Grüße aus Wien

 

13 answers to this question

Recommended Posts

  • 0
Posted
27 minutes ago, chrisiwien said:

Ich möchte den Content-Security-Header "Access-Control-Allow-Origin" mit mehreren Domains setzen. Das geht aber offenbar gar nicht - oder doch? Die Developer-Konsole im Browser sagt "multiple domains not allowed" wenn ich diesen Eintrag einfüge:

Zitat: 

<origin>
Specifies an origin. Only a single origin can be specified. If the server supports clients from multiple origins, it must return the origin for the specific client making the request.

Quelle: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

  • 0
Posted

Das hilft mir jetzt nicht weiter. Auf https://developer.mozilla.org/de/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin ist zu lesen dass man auch eine "origin-list" angeben kann:

Zitat

Private APIs sollten niemals "*" verwenden, sondern stattdessen eine spezifische Domain oder eine Liste von Domains. 

Die Referenzseite wurde erst vor kurzem bearbeitet, die Infos scheinen aktuell zu sein. Bloß wo definiert man diese "origin-list"? Wenn man einfach mit Leerzeichen separiert oder mehrere add_header-Anweisungen untereinander einfügt heißt es es darf nur ein Origin definiert werden...

  • 0
Posted

Ja du kannst doch einfach custom header in die eigenen vhost-einstellungen packen wie du möchtest...das ist nicht wo dich froxlor von abhält, kannst du pro domain machen oder in den IPs für alle domains

  • 0
Posted

Hm, ev. blicke ich nicht ganz durch... die Header kann ich schon einstellen, Problem ist aber ich kann aber beim "Access-Control-Allow-Origin"-Header nur eine Domain einstellen!

Umgehen könnte ich das wenn ich eine Weiterleitung von www.domain.com auf domain.com OHNE zusätzlichen www-vHost schaffen kann, mit Froxlor. Das wird aber nicht gehen, oder?

Wenn ich das script https://domain.com/script.php aufrufe ABER die Seite über https://www.domain.com betrachte schießt mir die CORS-policy den Aufruf ab.

Hm.

  • 0
Posted
21 minutes ago, chrisiwien said:

Umgehen könnte ich das wenn ich eine Weiterleitung von www.domain.com auf domain.com OHNE zusätzlichen www-vHost schaffen kann, mit Froxlor. Das wird aber nicht gehen, oder?

.htaccess ist dein freund

  • 0
Posted

naja, mitdenken, dann halt entsprechendes nginx-vhost-schnippsel-pendant dazu in die "eigene vhost-settings" der domain

  • 0
Posted

Jo, hab ich ja gemacht. Zumindest für den Access-Control-Allow-Origin-Header.

Ok, also muss ich doch mitdenken 😄 und einen location-Eintrag in den Einstellungen setzen der mir den www-Aufruf auf non-www umleitet, korrekt?

  • 0
Posted
Just now, chrisiwien said:

Ok, also muss ich doch mitdenken 😄 und einen location-Eintrag in den Einstellungen setzen der mir den www-Aufruf auf non-www umleitet, korrekt?

Du kriegst das schon raus...googe "nginx www redirect" o.Ä. - als serveradmin der nginx nutzt sollte das drin sein :)

  • 0
Posted

Sicher krieg ist das raus, hab auch schon zig Einträge selbst gemacht. Aber das ist wieder eine neuer Fall, neue Einstellungen. Hör mir zudem lieber zuerst an was Froxlor dazu sagt bevor ich was selber schnitz!

Danke für die Kommunikation, ich versuch das mal. Das muss man mal behirnen, dass durch den gesetzen www-Alias der non-www-vHost aufgerufen wird - und dass ich dann dort die www-domain nochmals verarbeiten kann.

  • 0
Posted

ja evaluierung "on-the-fly" ist immer "evil" für dienste wie nginx und co. Alternativ kannst du z.B. die domain auf "Kein Alias" stellen, dann die www.domain.com separat anlegen und bei domain.com als documentroot einfach https://www.domain.com eintragen - dann macht er da separate vhosts (den einen mit einem reinen redirect) und den anderen dann "normal" (und ohne if)

  • 0
Posted

Evil: ok, kann ich mir vorstellen. Da ich das "nebenberuflich" mache bin ich mal zufrieden und lese mich später ein.

Zweiter vHost, ich weiß, aber da hatten wir mal eine Diskussion (https://forum.froxlor.org/index.php?/topic/19573-automatische-verlängerung-von-lets-encrypt-zertifikat/page/3/#comment-43204) bzgl. nicht funktionierendem automatischen Lets Encrypt-Update. Jetzt klappt das, das will ich momentan nimma angreifen.

Danke jedenfalls für die Rückmeldung.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...