Я не использовал это на практике, поэтому могут быть проблемы с практичностью, на которые я не рассчитывал, но думал, что все равно внесу эту идею. Если я правильно интерпретирую, это похоже на (если не совпадает с) идею, опубликованную @Seldaek.
- Ваш сервер генерирует уникальный идентификатор для каждой подачи страницы и встраивает идентификатор на страницу.
- Сервер хранит идентификатор и IP-адрес Клиента.
- js на клиенте помещает идентификатор в своем запросе на сервер и отправляет запрос.
- Когда Сервер получает запрос js от Клиента, он отвечает только в том случае, если пара IP / ID совпадает с парой в файле (см. # 2).
- Через некоторое указанное время (и / или после окончания сеанса браузера) срок действия записей идентификатора / IP-адреса истекает.
Возможно, это может быть подделкой, если человек, разделяющий IP-адрес посетителя (возможно, оба находятся за одним и тем же NAT-окном), перехватывает сеанс другого посетителя в режиме реального времени, но это, по крайней мере, помешает кому-то создать другую веб-страницу, на которую ссылаются служба вашего сервера.
Могут также возникнуть проблемы, если по какой-то причине IP-адрес вашего посетителя изменится между тем, когда страница обслуживалась, и когда был отправлен запрос js.
По сути, ваш сервер говорит: «Я не буду обслуживать ваш запрос js, если вы не обладаете данными со страницы, которую я недавно обслуживал, и вы пришли (насколько мне известно) из того места, где я обслуживал эту страницу. "