我需要發佈數據以在不受我控制的外部網站上形成。我正在構建一個工具,允許用戶在一個地方填寫數據,然後發佈到多個存放相似表單的外部網站,而不是單獨填寫每個表單。將數據發佈到外部表格
基本上,工作流程是這樣的:
- 用戶填寫全面形成我的網頁
- 這個數據被存儲到我的分貝
- 用戶被重定向到感謝頁面,鏈接到外部形式
- 點擊任何鏈接時,新窗口應打開窗體部分字段與我的表格匹配的字段
這最後一步是駭人聽聞的。我依靠外部表單進行正確編碼,所以當我發佈數據不足時(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保護 –
您要麼建立一個瀏覽器插件,要麼你將不得不面對的事實是你無能爲力。如果他們不接受來自其他域的帖子請求,則由於相同的原始策略使您幾乎不可能與另一個頁面進行交互,所以您運氣不佳。 – epascarello
使用瀏覽器插件會使這個問題變得輕而易舉,但是我僅限於PHP,JS和類似的。 – user2219715