%20en%20Nginx.png)
Mi problema es exactamente el mismo que se describe aquí:Deshabilite la autenticación para el método OPCIONES HTTP (solicitud de verificación previa). Estoy intentando utilizar contraseñas CORS y HTTP al mismo tiempo. Cuando el navegador ve OPCIONES rebotadas (código de estado 401), por alguna razón comprobará inmediatamente los encabezados CORS (que estarán ausentes) y rechazará la solicitud.
Aquí está mi configuración:
location /api/ {
proxy_pass http://127.0.0.1:14000;
proxy_set_header Host $host;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
add_header Access-Control-Allow-Credentials true;
auth_basic "Restricted Area";
auth_basic_user_file /var/www/admin.htpasswd;
}
Respuesta1
Aquí está la solución que se me ocurrió. Sin embargo, no es necesario duplicar todas las directivas CORS add_header.
location /api/ {
proxy_pass http://127.0.0.1:14000;
proxy_set_header Host $host;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
add_header Access-Control-Allow-Credentials true;
if ($request_method = OPTIONS) {
add_header Content-Length 0;
add_header Content-Type text/plain;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
add_header Access-Control-Allow-Credentials true;
return 200;
}
auth_basic "Restricted Area";
auth_basic_user_file /var/www/admin.htpasswd;
}
Respuesta2
Encontré una solución más limpia que permite al nodo administrar la solicitud:
Coloque la siguiente configuración dentro de "ubicación" y elimine cualquier auth_basic del servidor. Esto funcionará.
location / {
# Your node proxy configuration for example #
# Make options requests work #
limit_except OPTIONS {
auth_basic "Restricted access zone";
auth_basic_user_file /etc/nginx/pass/protected;
}
}
Respuesta3
siguiente información enlimit_except/if bloquea problemas, sugeriría usar map
:
map $request_method $auth_basic_value {
default "Restricted";
"OPTIONS" "off";
}
location / {
auth_basic $auth_basic_value;
}
Tenga en cuenta que si tiene algunos try_files
en esa ubicación, que pueden reescribir la consulta en otra ubicación, es posible que también deba configurar auth_basic $auth_basic_value
.