Access-Control-Allow-Origin '*' niedozwolony / działa z Apache2

2

Próbuję połączyć się z hood.ie przez Javascript:

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

Ale wtedy pojawia się błąd: 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.

Z:

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

Daje 404...

Mogę połączyć się z localhost: 6001i: 6002dla public / admin, więc porty działają (także dla zewnętrznego example.com)

Ale w devconsole otrzymuję:

OPTIONS: http://example.com:6001/_api/_sessionSymbol wieloznaczny „*” nie może być użyty w 'Access-Control-Allow-Origin'nagłówku, gdy flaga referencji jest prawdziwa. W związku z tym źródło „ http://example.com ” nie ma dostępu. `

Skonfigurowałem Apache2:

 <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>

Próbowałem dodatkowo:

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

Wypróbowany:

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"

Próbowałem wszystkich możliwych odmian, ale wciąż pojawia się ten sam błąd ...

Zastanawiam się jednak, czy muszę to ustawić w innym miejscu, ponieważ wwwkatalog :6001usługi znajduje się gdzieś w moim katalogu domowym, nie w var / www, ale nadal działa, nie mam pojęcia, jak apache to obsługuje, lub wie o lokalizacji lub jeśli hood.ie uruchomi własną usługę internetową.

TrySpace
źródło
Patrzysz na niewłaściwą stronę. Jest to błąd po stronie klienta. Przeglądarka odmawia zaakceptowania tego, co tam jest.
Daniel B

Odpowiedzi:

2

Uważam, że powinno to być po prostu:

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

bez innych flag Access-Control- *, jak opisano na enable-cors.org .

Ouroborus
źródło
1

Ja przypuszczam , że „kapturem” używa XMLHttpRequest, który wysyła wzdłuż ciasteczka (withCredentials = „true”), a więc przeglądarka odrzuca odpowiedzi z serwera, ponieważ ma to wieloznaczny w dozwolonym nagłówku pochodzenia.

Morten Fjeldstad
źródło