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

vim colorscheme aus einem anderen Ordner

Ich habe gerade versucht bei meinem Hoster die Einstellungen für vim anzupassen.
Zugang zu vimrc habe ich, jedoch nicht zum vim/colors Ordner.

Hier habe ich nun nach eine Möglichkeit gesucht, einen anderen Ort zu definieren, wo ich die colorschemes ablegen kann und bin hier fündig geworden :
Coderwall.com | portable vim configuration via dropbox

In der vimrc kann man nun folgendes eintragen:


set runtimepath+=~/Dropbox/vim
source ~/Dropbox/vim/vimrc.vim

oder für meinen Fall hat auch erstmal folgendes gereicht


set runtimepath+=~/files/vim
syntax enable
colorscheme monokai

In dem Ordern files/vim/colors/ kann ich nun colorschemes hinterlegen und auf diese verweisen 🙂

Da macht das arbeiten mit Vim remote wieder doppelt so viel Spass.

Vielen Dank an coderwall.com für den Hinweis

TYPO3 wie bekomme ich den Datrei Pfad von „file:123“

Gerade muss ein kleines Legacy projekt geupdatet werden.
In einem Datensatz einer Extension gab es ein Link Wizard.
Bisher war es so das der DateiPfad in das Inputfeld geschrieben wurde, jetzt allerdings nur noch „file:123“

Wir bekomme ich nun in der pibase Extension hier den Pfad für die Datei um sie an die Marker(*) zu übergeben.
Gegooglte und hier endete die Suche: https://forum.typo3.org/index.php/t/194348/


$fileObject = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->retrieveFileOrFolderObject( 'file:123' );
$filePath = $fileObject->getPublicUrl();

Besten Dank auch von mir an „Frans Saris (minifranske)“ für die Lösung.

* ich sage ja … Legacy Code 😉

Backend_Layouts und Benutzerrechte

Bevor ich es wieder vergesse.
Beim erstellen von Backend_layouts kann es manchmal ganz nützlich sein, wenn Redakteure nicht alle Bereiche bearbeiten können.
Als Beispiel haben wir ein Backend_layout mit den Feldern „Bühne“ (colPos 10), „Links“ (colPos 20), „Rechts“ (colPos 30) und „Footer“ (colPos 40).

soll ein Redakteur nun keinen Zugriff bzw. keine Berechtigung für die Bühne haben. Kann man im Gruppen TsConfig Feld folgende Eintragung machen.


page.mod.SHARED.colPos_list= 20,30,40

Nun gibt es für den Redakteur nur den Hinweis „Keine Bearbeitungsrechte“ anstelle der Bühne.

Besten Dank an Thomas Rawiel für den Hinweis 🙂

Gridelements bei Update zerschossen

Ich war gerade dabei ein TYPO3 Update von einer 4.5 Version auf TYPO3 6.2 zu machen, da hat sich dann einfahc mal Gridelements verabschiedet.
Alle Content-Elemente folgen lose auf der Webseite herum und es gab keine Zuordnunge mehr zu den Rasterlementen.

Wer lesen kann ist klar im Vorteil, wie ich raus finden musste … steht sogar im Manual von Gridelements, drauf geachtet habe ich beim Update jedoch nicht.

Important note about the colPos field!

The colPos field of the tt_content table will be changed from unsigned int(3) to smallint(6) to enable the usage of negative values. This should never be reverted by any upgrade script later on! Otherwise any child element will be moved from it’s parent container to the default page column. Some people ran into problems during automatic upgrades done by their providers. So be sure to make a backup of your content before upgrading!

Die Lösungen habe ich dann, Gott sei Dank, auf dieser Seite gefunden.

Die dort gezeigte Lösung macht ein Backup der colPos mit folgendem Befehl. (Gut das ich die Original DB noch hatte und lokal schnell in xampp importieren konnte)


SELECT
CONCAT('UPDATE tt_content set colPos=',colPos,' where uid=',uid,' limit 1;')
FROM
tt_content
ORDER BY
uid;

Danach das Ergebnis exporrtieren und die die Ausgabe so anpassen, das wir nur noch Zeilen wie in diesem Beispiel haben:


UPDATE tt_content set colPos=0 where uid=1 limit 1;
UPDATE tt_content set colPos=-1 where uid=8 limit 1;
UPDATE tt_content set colPos=-2 where uid=12 limit 1;

Und alles sieht wieder schicki aus 😀

Danke an Christian Wolfram für das posten dieses Beitrags

Remove PHP Closing Tags – Shell Script

find . -type d \( -path ./typo3/contrib/idna -o -path ./typo3/contrib/pear -o -path ./typo3/sysext/adodb/adodb -o -path ./typo3/sysext/openid/lib/php-openid -o -path ./typo3/sysext/openid/lib/php-openid/Auth \) -prune -o -name '*.php' -print | while read FILE; do tail -n1 $FILE | grep '^?>$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

By Christian Kuhn
Quelle: forge.typo3.org

P.S.
Anpassung für OSX


.. sed -i '' ..

hinter dem sed -i LEERZEICHEN “

Quelle:
http://stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x