Ответ на этот вопрос действительно зависит от того, как вы этого хотите.
Есть ли способ проверить, что форма отправлена из Unity?
Да
Вы можете использовать заголовок, чтобы установить для «User-Agent» значение «WEBGL-BUILD» или любое другое уникальное значение:
var uwr = new UnityWebRequest(url, "POST");
uwr.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
uwr.SetRequestHeader("User-Agent", "WEBGL-BUILD");
yield return uwr.SendWebRequest();
или используйте форму для отправки значения, которое показывает, что запрос получен от WebGL Build:
WWWForm form = new WWWForm();
form.AddField("User-Agent", "WEBGL-BUILD");
UnityWebRequest uwr = UnityWebRequest.Post(url, form);
yield return uwr.SendWebRequest();
Затем проверьте заголовок или форму на сервере, чтобы убедиться, что они совпадают.
Ограничить форму POST только Unity
Нет .
Вы не можете этого сделать. Причина в том, что люди могут это изменить. Даже с двумя методами, которые я упомянул выше, любой может по-прежнему сделать реинжиниринг вашей программы и выяснить, что вы отправляете на сервер, затем создать поддельный запрос на любом языке программирования и отправить его на сервер.
Реализация того, что я сказал выше, только усложнит злоупотребление вашим сервером, но не может полностью ограничить форму POST только Unity. Просто придерживайтесь аутентификации на основе токенов. Еще лучше использовать oauth2.