Задать вопрос
alestro
@alestro

Как определить что запрос к api пришел с клиента?

Есть фронт на js, как на api сервере можно определить, что запрос пришел именно с фронта?
Бэкенд и фронт находятся на одно домене, при этом сервер рендерит фронт.
  • Вопрос задан
  • 802 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 3
Никак.
Ответ написан
Комментировать
EreminD
@EreminD
Кое-что умею
да никак.
вы хотите убедиться, что запрос пришел с конкретного девайса или с конкретного типа устройства (мобилка, веб, часы)?

  • Существует заголовок User-Agent (https://developer.mozilla.org/en-US/docs/Web/HTTP/...). В нем содержится инфа об ОС и браузере, с которого пришел запрос
  • Вы можете прокидывать какой-то свой специальный заголовок в запросах. Например сделать заголовок client-device-name и передавать какое-то спец.имя
  • Вы можете гененрить на стороне бэка какой-нибудь токен и передвать его в ответе, в куках. Потом, при следующем запросе, проверять наличие этого токена


И да, все эти варианты можно имитировать в Postman или просто cURL. Так что методов нет
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Отдавая фронт, сервер может установить в нём уникальное значение ключа, и требовать именно это же значение в запросах к api. Скажем, в HTTP-заголовках запроса. Если нет ключа – запрос отклонять.

Значение это может быть привязано ко времени и считаться действительным только в течение часа, например.

Но и это никак не защищает от того, что получив код фронта, «злодей» не станет выполнять запросы с этим ключом из своих скриптов. Уточните вашу задачу, чего хочется добиться.

Авторизация пользователя — этот вариант вполне. Чел логинится на бэке и получает уникальный временный ключ, ассоциированный с его аккаунтом.

Ограничение по частоте запросов к API тоже с ключом решается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы