[英]Cross-domain post with Greasemonkey?
我需要在后台發布Greasemonkey。 我嘗試動態創建一個iframe並將其發布到它,但是它不起作用:
function crossDomainPost() {
// Add the iframe with a unique name
var iframe = document.createElement("iframe");
var uniqueString = "CHANGE_THIS_TO_SOME_UNIQUE_STRING";
document.body.appendChild(iframe);
iframe.style.display = "none";
iframe.contentWindow.name = uniqueString;
// construct a form with hidden inputs, targeting the iframe
var form = document.createElement("form");
form.target = uniqueString;
form.action = "http://INSERT_YOUR_URL_HERE";
form.method = "POST";
// repeat for each parameter
var input = document.createElement("input");
input.type = "hidden";
input.name = "INSERT_YOUR_PARAMETER_NAME_HERE";
input.value = "INSERT_YOUR_PARAMETER_VALUE_HERE";
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
有人說,即使我們發布內容,我們也無法接受這些價值觀。 如果不能,僅讓用戶訪問頁面就足夠了。 它可以在JS,jQuery,AJAX中發布。 不僅是form-iframe的把戲。
Greasemonkey具有對跨域發布的內置支持。 您無需使用jsonp或iframe。 使用GM_xmlhttpRequest函數 。
您無需直接構建並發布表單,而是直接發送表單編碼的數據:
var formData1 = "1 INSERT_YOUR_PARAMETER_VALUE_HERE";
var formData2 = "2 INSERT_YOUR_PARAMETER_VALUE_HERE";
var formData3 = "3 INSERT_YOUR_PARAMETER_VALUE_HERE";
// etc.
GM_xmlhttpRequest ( {
method: "POST",
url: "http://YOUR_SERVER.COM/YOUR_PATH",
data: "formData1=" + encodeURIComponent (formData1)
+ "&" + "formData2=" + encodeURIComponent (formData2)
+ "&" + "formData3=" + encodeURIComponent (formData3)
// etc.
,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function (response) {
console.log (response.responseText);
}
} );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.