如何发出HTTP请求以在PrivateBin上生成粘贴链接?

时间:2019-01-01 07:42:39

标签: javascript google-chrome-extension xmlhttprequest

我正在创建一个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.pnghttps://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 *;">

但是它仍然返回相同的错误。

0 个答案:

没有答案