Мне нужно разместить данные для создания на внешнем сайте, который не под моим контролем. Я создаю инструмент, позволяющий пользователю заполнять данные на одном месте, а затем отправлять на несколько внешних сайтов, на которых размещаются похожие формы, а не заполнять каждую форму отдельно.Публикация данных во внешнюю форму
В принципе, рабочий процесс выглядит следующим образом:
- Пользователь заполняет комплексную форму на моей странице
- Эти данные получает хранится в моей БД
- Пользователь перенаправляется спасибо вам страницу со ссылками на внешние формы
- Если какие-либо из ссылки щелкает, новое окно должно открываться формой частично полями с согласующими полями из моей формы
Этот последний шаг хакерский. Я полагаюсь на внешнюю форму, чтобы быть правильно закодированной, поэтому, когда я делаю сообщение с ней с недостаточными данными (captcha и несколько других обязательных полей отсутствует), я рассчитываю, что эта страница будет перезагружена с размещенными данными, включенными в форму, и поля с отсутствующими данными. Таким образом, пользователь может заполнить только те недостающие данные (в идеале, только captcha), и не придется тратить еще один час на повторное включение одних и тех же данных.
Это означает, что выполнение завитушки не сокращает его, поэтому я пошел со следующим JS-подходом.
function repostForm(id, url) {
var map = fieldMap[id]; // this is map between my field names and external form field names
// construct form
var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', url);
form.setAttribute('target', '_blank');
for (i=0; i<map.length; i++) {
var input = document.createElement('input');
input.setAttribute('name', map[i].external);
input.setAttribute('value', submissionData[map[i].local]);
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
}
Этот код выполняет хорошо, и я могу видеть данные, размещены на внешней форме. Однако, вместо того, чтобы показывать мне частично заполненную форму с отсутствием какого-либо поля, я просто получаю пустую форму.
Я пробовал это с двумя разными формами, и они оба действуют таким образом.
Неужели мне не повезло, так что у этих форм есть дополнительные проверки безопасности (например, проверка поля HTTP Referer), или я что-то пропустил на более базовом уровне? Я не могу отправить ссылку на эти формы, так как эта информация может быть чувствительной, поэтому мне интересно, если эта основная идея должна работать в идеальном случае, если все подходит должным образом или имеет фундаментальный недостаток.
Я знаю, что будут выделены граничные шкафы, и меня интересует только принцип.
Благодаря отчислять заранее
Они могут использовать какую-либо защиту CSRF. –
Вы либо создаете плагин для браузера, либо вам придется столкнуться с фактом, что вы ничего не можете сделать. Если они не принимают почтовые запросы из другого домена, вам не повезло из-за той же политики происхождения, что практически невозможно, чтобы JavaScript мог взаимодействовать с другой страницей. – epascarello
Наличие плагина для браузера сделает эту проблему легкой, но я ограничена PHP, JS и так же. – user2219715