gpt4 book ai didi

google-chrome - 使用 GM_xmlhttpRequest 在 Chrome 上发布数据?

转载 作者:行者123 更新时间:2023-12-03 14:54:11 25 4
gpt4 key购买 nike

我正在编写一个用户脚本来从页面中获取图像,并将其上传到服务器。
该脚本在 FF(Greasemonkey 和 Scriptish)中运行良好,但是当我使用 Chrome(使用 Tampermonkey 或 Ninjakit)时,它不发送数据,而是发送字符串 * [object Object] *。

这是我的脚本:

// ==UserScript==
// @id myid
// @name myname
// @version 1.0
// @namespace ohadcn
// @author Ohad Cohen
// @description mydescription
// @include https://*
// @grant GM_xmlhttpRequest
// @require https://code.jquery.com/jquery-2.0.3.min.js
// @run-at document-end
// ==/UserScript==

function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

img=$("img[alt=myImage]").get(0);

img.onload=function(){
var img64=getBase64Image(img)
var _data=new FormData();
_data.append("image64",img64);

GM_xmlhttpRequest({
method: "POST",
url: "http://myserver.org/mysscript.py",
headers: {
"Content-Type": "multipart/form-data"
},
data:_data,
onload: function(response) {
console.log ("gut response");
$("#input").get()[0].value=response.responseText;
}
});
}

Tampermonkey 和 Ninjakit 都会发送请求。在 Tampermonkey 中,我得到了响应,在 Ninjakit 中我没有(从不调用 onload)。

但是他们不发送用 base64 编码的实际图像 - 当我读取数据时 - 服务器获取 [object Object] 作为 POST 主体(而不是数据主体,我无法让 devtools 网络面板显示由 GM_xmlhttpRequest 发出的请求,所以我在服务器端检查了它)。

最佳答案

可能是FormDatamultipart/form-data在这些平台上没有得到很好的支持。需要更多地研究它(稍后)。

同时,尝试更典型的方法;使用 application/x-www-form-urlencoded或 JSON。

例如:

GM_xmlhttpRequest ( {
method: "POST",
url: "http://myserver.org/mysscript.py",
data: "image64=" + encodeURIComponent (img64),
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function (response) {
console.log ("gut response");
$("#input").get()[0].value=response.responseText;
}
} );

关于google-chrome - 使用 GM_xmlhttpRequest 在 Chrome 上发布数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com