
Ich versuche, über Javascript eine Verbindung zu hood.ie herzustellen:
hoodie = new Hoodie('http://example.com:6001');
Aber dann erhalte ich eine Fehlermeldung: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 zu localhost
: 6001
und: 6002
für öffentlich/Admin herstellen, also funktionieren die Ports (auch für das externe example.com)
Aber in der Devconsole erhalte ich:
OPTIONS: http://example.com:6001/_api/_session
Ein Platzhalterzeichen „*“ kann im 'Access-Control-Allow-Origin'
Header nicht verwendet werden, wenn das Anmeldeinformationsflag wahr ist. Herkunft „http://example.com' ist der Zugriff daher nicht gestattet.`
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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/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 noch eins probiert:
<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"
Habe alle möglichen Varianten ausprobiert, aber bekomme immer noch den gleichen Fehler ...
Aber ich frage mich, ob ich es an einem anderen Ort einrichten muss, da sich das www
Verzeichnis des :6001
Dienstes irgendwo in meinem Home-Ordner befindet, nicht in var/www, aber trotzdem funktioniert. Ich habe keine Ahnung, wie Apache damit umgeht oder den Speicherort kennt oder ob hood.ie seinen eigenen Webdienst startet.
Antwort1
Ich glaube, es sollte einfach heißen:
Header set Access-Control-Allow-Origin "*"
ohne die anderen Access-Control-* Flags wie beschrieben aufenable-cors.org.
Antwort2
Ich würdeerratendass „Hoodie“ einen XMLHttpRequest verwendet, der Cookies mitsendet (withCredentials = „true“), und Ihr Browser daher die Antwort vom Server ablehnt, da dieser ein Platzhalterzeichen im zulässigen Ursprungsheader enthält.