Jump to content
Froxlor Forum
  • 0

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


Question

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

 

Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0
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

Link to post
Share on other sites
  • 0

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...

Link to post
Share on other sites
  • 0

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

Link to post
Share on other sites
  • 0

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.

Link to post
Share on other sites
  • 0
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

Link to post
Share on other sites
  • 0

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

Link to post
Share on other sites
  • 0

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?

Link to post
Share on other sites
  • 0
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 :)

Link to post
Share on other sites
  • 0

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.

Link to post
Share on other sites
  • 0

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)

Link to post
Share on other sites
  • 0

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.

Link to post
Share on other sites

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...