Access-Control-Allow-Origin header

Hi!

Ich bin derzeit dabei, eine Smartphone App zu entwickeln (AngularJS + Phonegap).
Die App soll Daten von einem Server über JSON abrufen, die von einem PHP Backend zur Verfügung gestellt werden. Ich wollte das ganze bei euch auf dem Webspace testen, glaube aber der Grund dafür dass es nicht funktioniet ist eine Serverseitige Restriktion gegen Cross Domain Zugriff (leider kann ich das nicht genau sagen, da headers_list(); deaktiviert ist).

Gibt es die Möglichkeit mir so einen Zugriff zu gewähren?
Ich müsste höchstwahrscheinlich nur den Header “Access-Control-Allow-Origin” senden können (eventuell aber noch andere - vielleicht habt ihr hier schon Erfahrungen?).

Wäre super, wenn ihr mir eine kurze Auskunft geben könnt ob sowas bei euch klappt! :slight_smile:

Liebe Grüße und ansonsten riesen Lob für euren geilen Service!!

Cross-Domain werden von deinem Browser verhindert, nicht Serverseitig. Wenn du möchtest dass es dennoch geht musst du es mit dem von dir genannten Header explizit erlauben:

Welche Header standardmäßig gesendet werden kannst du von deinem Browser erfahren (Entwicklerkonsole -> Netzwerk -> Auswählen und Header anzeigen lassen).

wüsste net wieso “headers_list” nicht gehen sollte… allerdings kenn ich auch kein praktischen nutzten für die Funktion xD Du solltest schon wissen welche Header du gesetzt hast^^
Hast du überhaupt schon versucht einen Header zu setzen? Z.B. <span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Access-Control-Allow-Origin: http://example.com'</span><span class="syntaxkeyword">);&nbsp;</span><span class="syntaxdefault"></span>

PS: da war wohl jemand nen Tick schneller…

danke für die antworten!

headers_list() geht nicht, gibt auch php_info aus.
Ich habe testweise versucht Access-Control-Allow-Origin: * zu setzen, brachte aber keinen Erfolg. Danke für den Tipp mit der Entwicklerkonsole, wusste gar nicht, dass die da auch angezeigt werden, werde ich direkt mal probieren.

Klar… der Webdeveloper kram heutiger Browser kann das meiste… (also Firefox und Chrome)
Allerdings bevorzuge ich dennoch die Web Developer Toolbar: chrispederick.com/work/web-developer/

Wobei Modify Headers auch nen nettes Addon is um z.B. User-Agent etc. zu ändern… oder eines welches erlaubt Requests zu bearbeiten wie Tamper Data

Ok. Ich habe es ausprobiert, aber es funktioniert noch nicht.
Mein Skript zum testen:

<? header("access-control-allow-origin: '*'") or die("Fehler"); ?>

Ausgegeben wird “Fehler”.
In den Headern aus der Entwicklerkonsole steht folgendes:

Request URL:http://manulito.bplaced.net/header/
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Host:manulito.bplaced.net
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Response Headersview source
access-control-allow-origin:'*'
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:26
Content-Type:text/html
Date:Wed, 26 Mar 2014 14:52:26 GMT
Keep-Alive:timeout=4, max=500
Server:Apache/2.4
Vary:Accept-Encoding

Ich habe es sowohl mit einfachen Anführungszeichen probiert (bei *), als auch ohne.
Weiß da jemand ne Lösung?

Ich habe es rausgefunden.
Erstens: header liefert nichts zurück - daher wird or die () immer ausgeführt. -> quatsch für debugging.

Zweitens:
Der Code der zum Erfolg geführt hat

header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');

Anmerkung: Alle Domains via * zu erlauben sollte ausschließlich für Testzwecke verwendet werden - unsicher!!

Kann geschlossen werden - danke für die Hilfe mit der Konsole!