Как правильно отфильтровать GET-запросы сделанных из браузера?
Есть небольшой REST-интерфейс который на основании GET/POST-запросов реконфигурирует сервис. Пока что только начал его делать но столкнулся с проблемой из-за особенности работы современных браузеров. Запрос из браузера выполняется 2 раза, что ломает логику работы. Ну а так как это самый простой и быстрый вариант обновить конфигурацию, то его естественно будут использовать большинство. Запретил на web-сервере user-agent по паттерну (mozilla|chrome|safari).
Достаточно ли этого будет?
Есть ли другие варианты ограничивающие запросы из браузеров?
Если я правильно помню, то это CORS и настраивается очень просто. На запрос OPTIONS отдаете с сервера 204 и следующий запрос доходит уже куда нужно.
Инструкция для Nginx: https://enable-cors.org/server_nginx.html
Не, CORS - кросс-доменная "разрешалка". Если не настроенная, то не пускает. Мне же надо "ловить" браузеры и если это действительно браузер, а не curl/wget, requests (Python), fopen (PHP), ..., отдавать код 400.
Алексей, я в курсе что такое CORS.
Я к тому веду, что когда запрос кроссдоменный, то браузер сначала шлет запрос методом OPTIONS и если ответ ОК, то шлет нужный нам запрос. Отсюда и двойной запрос.
А почему у вас двойной я хз тогда ))
Ctrl+c url -> Ctrl+v Chrome - в логах сервера появляется первый GET-запрос.
Enter Chrome - в логах сервера появляется 2-ой GET-запрос, абсолютно идентичный первому.