У меня есть API, обслуживаемый Nginx (релиз Openresty), работающий на http://v1.api.macamera.be/
Когда мое приложение внешнего интерфейса (Vue2), запущенное на моем настольном компьютере, запрашивает GET из моего API, на веб-странице отображается следующая «Ошибка сети».
Вывод на консоль:
Failed to load http://v1.api.macamera.be/event/:
No Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://127.0.0.1:8081' is therefore not allowed access.
Openresty является выпуском по умолчанию со встроенным модулем 'headers-more-nginx-module-0.33'
Что я пытался решить проблему:
server {
listen 80;
# listen 443 ssl;
server_name v1.api.macamera.be;
# server_name 127.0.0.1;
# include snippets/ssl-params.conf;
# ssl_certificate /etc/letsencrypt/live/v1.api.macamera.be/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/v1.api.macamera.be/privkey.pem;
root /data/sites/v1.api.macamera.be;
access_log /data/sites/v1.api.macamera.be/logs/access.log;
error_log /data/sites/v1.api.macamera.be/logs/error.log;
# pour éviter les erreurs network dans les browsers (à afiner + tard!!):
# add_header 'Access-Control-Allow-Origin' '*';
# add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#more_set_headers 'Access-Control-Allow-Origin: *';
more_set_input_headers "Access-Control-Allow-Origin: *";
location /event {
postgres_pass macamera;
rds_json on;
postgres_query HEAD GET "SELECT * FROM event";
postgres_escape $event_id $arg_event_id;
postgres_escape $camera_id $arg_camera_id;
postgres_escape $date $arg_date;
postgres_escape $file $arg_file;
postgres_query
POST "INSERT INTO event (event_id, camera_id, date, file) VALUES($event_id, $camera_id, $date, $file) RETURNING *";
postgres_rewrite POST changes 201;
}
location ~ /event/(?<event_id>\d+) {
postgres_pass macamera;
rds_json on;
postgres_escape $escaped_event_id $event_id;
postgres_query HEAD GET "SELECT * FROM event WHERE event_id=$escaped_event_id";
postgres_rewrite HEAD GET no_rows 410;
postgres_escape $title $arg_title;
postgres_escape $body $arg_body;
postgres_query
PUT "UPDATE articles SET title=$title, body=$body WHERE id=2 RETURNING *";
postgres_rewrite PUT no_changes 410;
# postgres_query DELETE "DELETE FROM articles WHERE id=$escaped_id";
postgres_query DELETE "DELETE FROM articles WHERE id=3";
postgres_rewrite DELETE no_changes 410;
postgres_rewrite DELETE changes 204;
}
}
Несмотря на мои "more_set_headers 'Access-Control-Allow-Origin: *';" директива, я все еще получаю ошибку.
Вот некоторая отладочная информация из действия GET:
![Network Error debug:](https://i.stack.imgur.com/1Z1bW.png)