Комментарии 13
Это не всегда решение, например, если нужно взаимодействовать со сторонним API. Что в таком случае делать изволите? Скажем, если есть поддержка JSONP это одно, а если нет?
По поводу кредов и кук, можно поддержать, использовав proxy_cookie_domain, но вообще это отдельная тема, как их правильно преобразовывать и обрабатывать.
Как выше написали, ставить звездочку может обернуться проблемами в браузере. Если хотите разрешить всем доступ, то лучше вставить такие правила
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Headers' "$http_access_control_request_headers" always;
add_header 'Access-Control-Request-Method' "$http_access_control_request_method" always;
Т.е. в ответ будут отдаваться только запрашиваемые параметры. Если, например, Origin не передавался, то и не получите в ответе залоговок Access-Control-Allow-Origin
Нашёл на эту тему пару древних плагинов https://github.com/x-v8/ngx_http_cors_filter и https://github.com/detailyang/ngx_http_cors_filter
Вы изобрели api gateway. Верно я понял?
Вынужден не согласиться, API Gateway скорее про другое. Если вы внимательно прочитаете шапку статьи, то для решения поставленной задачи обычно поднимают целый сервер, который в той или иной мере располагается под reverse proxy.
выше почти всё сказали, вообще ++, идея рабочая, добавлю, что в гитхабе можно найти многозвездный API gateway в готовом докер образе на альпине. Что удобнее, чем просто конфиг
Кажется плохой идеей позволять ходить куда угодно с твоего nginx — для тестового стенда только если и сгодится. На проде такое использовать опасно т.к. вы по факту делаете общедоступную http проксю
Спасибо за статью. Очень помогла!
cors-anywhere на чистом конфиге nginx