CORS: Access-Control-Allow-Origin für mehrere Domains und Subdomains

Damit über eine Ajax Anfrage auf eine andere Domain zugegriffen werden kann, kann man JSONP nutzen oder CORS (Cross-Origin Resource Sharing).
CORS muss allerdings auf dem anzufragenden Server jedoch konfiguriert sein und zwar muss dieser die anfragende Domain kennen und somit den Zugriff erlauben.

In einer HtAccess kann man dafür z.B. folgendes nutzen:

< IfModule mod_headers.c >
Header set Access-Control-Allow-Origin "http://foo.example.com"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
< /IfModule >

Nun darf die Subdomain die Ajax Anfrage stellen und bekommt auch eine Antwort zurück, alternativ kann auch ein „*“ statt der Domain gesetzt werden, dann ist allen der Zugriff erlaubt.

Wenn jedoch nur einige Domains oder Subdomains drauf zugreifen sollen wird es etwas schwieriger, denn in den Spezifikationen ist das nicht weiter vorgesehen.
Es wird jedoch darauf hingewiesen, dass man den Anfragen gegen eine Whitelist gegen checkt und dann den Header für genau diese Domain setzt.

Mit Hilfe einiger StackOverflow Beiträge wie zum Beispiel diesem hier Access-Control-Allow-Origin Multiple Origin Domains?, konnte ich mir dann was zusammenstellen.

Bisher funktioniert bei mir folgendes sehr gut:


< IfModule mod_headers.c >
# Setzt den "Access-Control-Allow-Origin" Tag für http(s) und alle SubDomains (inkl. www) der aufgeführten Domains
SetEnvIf Origin "http(s)?://([a-z0-9]*\.)?(example.de|domain1.de|domain.pl|example.ro|foo.com)$" AccessControlAllowOrigin=$0$1
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
< /IfModule >

Kleine Notiz: die SubDomains sind auf Buchstaben und Zahlen beschränkt, z.B. abc123.example.de für akzeptiert werden, nicht jedoch abc.xyz.example.de

Falls man doch die regular expression(RegEx, RegExp) anpassen oder erweitern möchte, lohnt sich ein Blick auf http://regexr.com/ zu werfen.

P.S. Leerzeichen bei den spitzen Klammern entfernen

TYPO3: Fehlerausgabe in Version 7.6

TYPO3 hat ein tolles neues Feature.
Exceptions werden nicht mehr im Content ausgegeben, sonder nur für jenes Inhaltselement sowas wie

Oops, an error occurred! Code: 2015112412044407ef2354

In einem Testsystem macht das natürlich wenig Sinn.
So gibt es nun 2 Möglichkeiten die Fehlerausgabe wieder zu reaktivieren.

1.) Über die .htaccess Datei

Die folgende Zeile auskommentieren (also # entfernen)
#RewriteRule .? - [E=TYPO3_CONTEXT:Development]

Damit wird der Context auf Development gesetzt, was intern an verschiedenen Stellen abgefragt wird, daher ist zu empfehlen es wirklich auch nur in Testsystem zu nutzen.

2.) Über TypoScript
Es muss im TypoScript, am besten das HauptTemplate die Eigenschaft gesetzt werden

config.contentObjectExceptionHandler = 0

mehr dazu in der Doku von TYPO3

Happy Coding