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

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

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: 6001und: 6002fü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/_sessionEin 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 wwwVerzeichnis des :6001Dienstes 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.

verwandte Informationen