Access-Control-Allow-Origin '*' ist nicht erlaubt / arbeitet mit Apache2

5972
TrySpace

Ich versuche mich über Javascript mit hood.ie zu verbinden:

hoodie = new Hoodie('http://example.com:6001'); 

Dann aber einen Fehler bekommen: A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'xxx' is therefore not allowed access.

Mit:

hoodie = new Hoodie('http://example.com'); 

Gibt 404...

Ich kann eine Verbindung herstellen zu localhost: 6001und: 6002für public / admin, also funktionieren Ports (auch für externe example.com)

Aber in devconsole bekomme ich:

OPTIONS: http://example.com:6001/_api/_sessionEin Platzhalter '*' kann nicht in der 'Access-Control-Allow-Origin'Kopfzeile verwendet werden, wenn das Kennzeichen für Berechtigungsnachweise wahr ist. Origin ' http://example.com ' hat daher keinen Zugriff. `

Ich habe Apache2 konfiguriert:

 <VirtualHost *:80> DocumentRoot /var/www Header set Access-Control-Allow-Origin * Header add Access-Control-Allow-Headers "origin, content-type" Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS" Header set Access-Control-Allow-Credentials "false" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all Header set Access-Control-Allow-Origin * Header set Access-Control-Allow-Credentials "false" </Directory>  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog $/error.log  # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn  CustomLog $/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> 

Und probierte ein Extra aus:

<VirtualHost *:6001> Header set Access-Control-Allow-Origin * Header set Access-Control-Allow-Credentials "false" </VirtualHost> 

Versucht:

Header set Access-Control-Allow-Credentials false Header set Access-Control-Allow-Credentials 'false' Header set Access-Control-Allow-Credentials true  ...etc  Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Origin "example.com" 

Ich habe alle möglichen Varianten ausprobiert, bekomme aber trotzdem den gleichen Fehler ...

Aber ich frage mich, ob ich es an einem anderen Ort einrichten muss, weil sich das wwwVerzeichnis des :6001Dienstes irgendwo in meinem Home-Ordner befindet, nicht in var / www, aber es funktioniert, ich habe keine Ahnung, wie Apache damit umgeht. oder weiß über den Standort oder ob hood.ie einen eigenen Webservice startet.

2
Du schaust auf die falsche Seite. Dies ist ein clientseitiger Fehler. Der Browser akzeptiert nicht, was dort ist. Daniel B vor 9 Jahren 0

2 Antworten auf die Frage

3
Ouroborus

Ich glaube es sollte nur sein:

Header set Access-Control-Allow-Origin "*" 

ohne die anderen Access-Control- * Flags, wie auf enable-cors.org beschrieben .

1
Morten Fjeldstad

Ich vermute, dass "Hoodie" ein XMLHttpRequest verwendet, das Cookies mitsendet (withCredentials = "true"), und Ihr Browser die Antwort des Servers daher zurückweist, da er im zulässigen Ursprungsheader eine Wildcard hat.