Sziasztok!
A címben említett hiba fogad a böngészőbe folyamatosan.
Egy Apache-ről lett átköltöztetve a weboldal nginx-re. (Apache-n jó volt... csak az egy másik szerver volt ahhoz nem férek hozzá)
Hozzá van adva (elvileg) megfelelően az add_header
add_header 'Access-Control-Allow-Origin' 'https://xy.hu' always; (ezt probáltam *-al is)
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Credentials' 'true' always; (Ezt kitöröltem hátha de semmi)
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested -With' always;
nginx reload megvolt mindig
location / {
try_files $uri $uri/ /index.php?$args;
ide is beleraktam itt se volt jó
}
Sok sok mindenen végigmentem sajnos eredménytelenül.
Ötletek?
köszönöm
- 547 megtekintés
Hozzászólások
Pontosan milyen fejléceket ad vissza a szerver? A weboldal maga nem küldhet ki ilyen fejléceket, amik szigorúbbak? "Vary: Origin" is megy ki a válaszban?
Ha a response látszólag oké, akkor ott kezdeném, hogy mindegyik sort kivenném és egyesével tenném vissza (bár a 'not match origin' eléggé az elsőre sor hibájára utal), hogy kiderüljön melyikkel van gond.
Ha statikus fájlok (képek, js, css) esetén kapod a hibát, az lehet akár attól, hogy a böngésző a cache tartalmának validálásához HEAD requestet küld és azt nem engeded a második sorban.
- A hozzászóláshoz be kell jelentkezni
Lekértem curl -X OPTIONS -i https://xy.hu
HTTP/1.1 405 Not Allowed
Server: nginx
Date: Thu, 01 Jul 2021 21:33:48 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Credentials: true
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
Illetve egy külső oldallal is.
Ezeket kaptam vissza
- A hozzászóláshoz be kell jelentkezni
nekem ugy tunik hianyzik belole az "Access-Control-Allow-Origin" header
sajat oldalon megneztem es
Access-Control-Allow-Origin: *
volt benne, persze apache, igy sokra nem megy vele
neked aztan fura humorod van...
- A hozzászóláshoz be kell jelentkezni
Most megjelent az Access-Control-Allow-Origin a domainnel együtt a válaszban, de továbbra sem hajlandó működni...
Curl -t használva viszont egyik sincs ott :)
- A hozzászóláshoz be kell jelentkezni
Az a 405 nem jelent jót a preflightnál, ha nem 2xx jön vissza, nem fog menni a dolog.
https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
- A hozzászóláshoz be kell jelentkezni
akkor hogyan adjak neki 2xx -et? :)
- A hozzászóláshoz be kell jelentkezni
pl így (csúnya, de próbálgatás idejére megteszi)
https://michielkalkman.com/snippets/nginx-cors-open-configuration/
- A hozzászóláshoz be kell jelentkezni
Itt van egy ilyen: location / {
try_files $uri $uri/ /index.php?$args;
}
Ha ide belerakom amit küldtél akkor nem hajlandó működni a kezdőoldalon kívül semmi, gondolom át kellene még írni valamit hogy helyére tegye az oldalakat is...
- A hozzászóláshoz be kell jelentkezni
Iderakom inkább a configot is.
- A hozzászóláshoz be kell jelentkezni
Én nem látom benne a "if ($request_method = 'OPTIONS')" részt, pedig ott (is) van a mágia...
- A hozzászóláshoz be kell jelentkezni
Betettem a location / {
try_files $uri $uri/ /index.php?$args;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Origin,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Max-Age' '1728000' always;
return 200;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Origin,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Max-Age' '1728000' always;
}
}
Most így néz ki de továbbra sem megy
- A hozzászóláshoz be kell jelentkezni
a try_files -t tedd a végére.
location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Origin,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Max-Age' '1728000' always; return 200; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Origin,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Max-Age' '1728000' always; } try_files $uri $uri/ /index.php?$args; }
- A hozzászóláshoz be kell jelentkezni
Továbbra is sajnos ugyanaz a hiba.
"Cross-Origin kérés blokkolva: Az azonos eredet házirend nem engedélyezi a távoli erőforrás olvasását innen:"
- A hozzászóláshoz be kell jelentkezni
Firefox mit ír a preflight requestre?
- A hozzászóláshoz be kell jelentkezni
Mondjuk az alkalmazásod lekezeli az Options requestet is. Csúnya, mert áttolod ezt a felelősséget az alkalmazás oldalra, de pl Spring Boot így (is) kezeli le Java-ban.
- A hozzászóláshoz be kell jelentkezni
Chrome (gondolom a róka is) a consolban egész részletesen el szokta mondani, hogy mi baja a pre-flightnak
- A hozzászóláshoz be kell jelentkezni
Csak ezt írja a firefox: Cors allow origin not match origin
- A hozzászóláshoz be kell jelentkezni