我需要将数据发布到不受我控制的外部网站上。我正在构建工具以允许用户在一个地方填写数据,然后发布到包含类似表单的多个外部站点,而不是单独填写每个表单。
基本上,工作流程是这样的:
- 用户在我的页面上填写综合表格
- 这些数据被存储到我的数据库中
- 用户被重定向到感谢页面,并带有指向外部表单的链接
- 单击任何链接时,应打开新窗口,其中部分字段包含我的表单中的匹配字段
最后一步是骇人听闻的。我依靠外部表单来正确编码,所以当我在数据不足的情况下发布到它(验证码和缺少其他必填字段)时,我指望该页面重新加载已发布的数据并合并到表单中,和标记有缺失数据的字段。这样,用户可以只填写那些丢失的数据(理想情况下只有验证码),而不必再花一个小时重新输入相同的数据。
这意味着做 curl post 不会削减它,所以我采用了以下 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 引用字段),或者我错过了更基本的东西?我无法发送这些表格的链接,因为该信息可能很敏感,所以我很感兴趣这个基本想法是否应该有效,在理想情况下,如果一切都合适,或者它是否有一些基本缺陷。
我知道会有很多极端情况,我只对原则感兴趣。
感谢提前分配