我正在创建一个chrome扩展程序,该扩展程序从某个站点获取一些HTML,并将其转换为Markdown,然后将其复制到用户的剪贴板中(粘贴在https://privatebin.net/上)。
我已经把这部分放下来了,现在我想使最后一部分自动化,将Markdown直接发送到privatebin,生成粘贴链接,然后将粘贴链接复制到用户剪贴板。
我花了几个小时尝试执行此操作,并提出了以下代码。我看过类似站点的文档,例如如何使用pastebin等,并尝试使其适合privatebin,但这是行不通的。它确实必须是privatebin。
我查看了privatebin(https://github.com/PrivateBin/PrivateBin/wiki/API)的API页面,但我仍然不确定如何使它工作。
向我展示了如何在Kotlin中完成此操作的示例,如下所示:(https://cdn.discordapp.com/attachments/524368836703813632/528405075241205763/1546051888.png,https://cdn.discordapp.com/attachments/524368836703813632/528405076147175462/1546051916.png),所以我尝试在JS中执行类似的操作。
test.onclick = function(){
var url = "https://privatebin.net/"
var req = new XMLHttpRequest();
var params = {
data: "test content",
expire: "never",
formatter: "markdown",
burnafterreading: 0,
opendiscussion: 0
}
req.open('POST', url);
req.setRequestHeader("X-Requested-With", "JSONHttpRequest");
req.send(JSON.stringify(params));
req.onreadystatechange = processRequest;
function processRequest(e) {
if (req.readyState == 4 && req.status == 200) {
alert(req.responseText);
}
}
}
结果是警报为空,而不是指向带有发送的数据的生成的URL的链接。 req.responseURL似乎仍然是基本的pastebin网站。
与Kotlin的示例相比,我没有使用密码短语和SJCL进行操作,并且我缺少User-Agent标头,但我都不知道该怎么做。
此外,当我尝试从https://bitwiseshiftleft.github.com/sjcl/sjcl.js中的popup.html脚本标记中导入SJCL时,我得到的是:https://i.imgur.com/5QHwi0j.png。我一直在寻找解决方案,并尝试放入
"content_security_policy": "script-src 'self' https://bitwiseshiftleft.github.com/sjcl/sjcl.js; object-src 'self'",
manifest.json和中的
<meta http-equiv="Content-Security-Policy" content="default-src *;">
但是它仍然返回相同的错误。