У меня есть простой локальный html с некоторыми JS, которые я в настоящее время обслуживаю через Docker - nginx на локальном хосте: 8080 через
docker run -it --name nginx_ol -v ${PWD}:/usr/share/nginx/html:ro -p 8080:80 -d nginx:alpine
JS должен получить JPG с («восходящего»?) сервера, например,
var url = http://example.com/foo/bar.jpg
fetch(url, {method: 'GET', mode:'cors'})
Сервер не настроен на отправку соответствующих CORS-заголовков. Попытка получить изображение таким образом приводит к [...] Origin localhost:8080 is not allowed by Access-Control-Allow-Origin
, как и ожидалось.
В моем понимании, мне нужно
- настроить nginx для обратного прокси-ресурса для моего локального хоста, пока добавление необходимых заголовков CORS
- Вместо этого сделайте запрос к прокси-расположению
Т.е. проксируйте расположение изображения с http://example.com/foo/bar.jpg
до http://localhost/foo/bar.jpg
и соответствующим образом настройте URL выборки.
Будучи полностью зеленым с точки зрения nginx / прокси, я прочитал документы по добавлению заголовков CORS для серверов Я управляю и видел примеры добавления заголовков CORS к прокси-серверам вот так .
Если бы я хотел прокси-запросы к localhost:8080/foo
до http://example.com/foo
, я бы ожидал, что что-то вроде следующего сделает эту работу:
server {
listen 80;
server_name localhost;
add_header 'Access-Control-Allow-Origin';
add_header ...
location / {
proxy_set_header Host $host;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control...
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-forward-for $proxy_add_x_forwarded_for;
proxy_pass http://example.com/;
}
}
Для URL запроса localhost:8080/foo/bar.jpg
Я получаю GET 404 (Not found)
, что говорит мне, что ничего подобного не происходит.
Извините, что это вопрос базового c недоразумения, но я уверен, что такие пользователи, как я, которые борьба с настройкой прокси-сервера принесет пользу любому толчку в правильном направлении :)