Быстрый ответ: нет, вы не можете.
Если вы пытаетесь предотвратить то, что можно описать как законные пользователи, которые получают доступ к вашему API, вы не сможете этого сделать.они всегда могут подделать ту же логику и сначала попасть на вашу веб-страницу, прежде чем злоупотреблять API.если это то, что вы пытаетесь предотвратить, то лучше всего добавить ограничение скорости для API, чтобы один пользователь не делал слишком много запросов к вашему API (я являюсь автором ralphi и express-rate-limit очень популярен).
Но если вы на самом деле пытаетесь предотвратить вымывание вами другого сайта из формы и предоставление контента своим пользователям, это на самом деле легче решить.
Большинство браузеров отправляют Заголовок реферера с запросом, вы можете проверить этот заголовок и увидеть, что запросы на самом деле поступают от пользователей на вашем собственном сайте (этот метод называется Leech Protection).
Выщелачиваниесайт может попытаться прокси-запрос к вашему API, но, поскольку все они будут приходить с одного и того же IP-адреса, они будут ограничивать вашу скорость, и он сможет обслуживать только нескольких пользователей, прежде чем их заблокируют.
Единственное, что может сделать сайт Leecher, это попытаться кэшировать ваш api, чтобы ему не приходилось делать так много запросов.если это возможный случай, вы вернулись на круги своя, и вам может потребоваться вручную заблокировать его IP, как только вы заметите такое злоупотребление.Я также проверил бы, является ли это законным, потому что он может нарушать закон.
Другой вариант, похожий на Реферер, - это использование samesite куки.они будут отправлены, только если запрос поступает непосредственно с вашего сайта.они, вероятно, более надежны, чем Referrer, но не все браузеры действительно уважают их.