【问题标题】:Electron webview loadURL POSTElectron webview loadURL POST
【发布时间】:2018-06-14 20:49:54
【问题描述】:

我在 SO 上找不到任何类似的问题。

有人可以向我展示一个如何在 POST 中使用 loadURL 的示例吗?我目前正在做以下事情

const url = firebaseCloudFunctionURL+"/endpointAPI";
const webview = document.createElement('webview');
webview.setAttribute("src", "https://www.nytimes.com/"); // forces dom-ready event to be called
webview.addEventListener('dom-ready', () => {
    const postDict = {
        query: "test_string"
    };            
    webview.loadURL(url, {postData: postDict});
});

但网络服务器显示请求正文为空。
(使用 Firebase 云功能)

exports.endpointAPI = functions.https.onRequest((req, res) => {
    const test = req.body.shop;
    console.log("req.body "+ JSON.stringify(req.body));
});

在日志中产生“req.body {}”。

electron documentation 中的 postData 是用 UploadRawData[] 写的。但是没有示例代码。有没有人让它工作?

【问题讨论】:

  • 你成功了吗?

标签: node.js electron


【解决方案1】:

根据文档建议,您应该提供 postData 以符合 Array<UploadRawData> | Array<UploadFile> | Array<UploadFileSystem> | Array<UploadBlob>,因此预计不会发送,因为您只是附加了普通对象。对于像下面这样的最简单的伪示例

webview.loadURL(url, {
    postData: [{
      type: 'rawData',
      bytes: Buffer.from('test_string2')
    }]
  })

显示给定字符串的带有缓冲区对象的帖子。首先,您应该发送数组,其次您应该为接受的对象类型遵循正确的类型。

【讨论】:

  • OJ Kwon 没用,req.body 还是空的。
  • 我已通过requestb.in 确认帖子正文正确输入给定的sn-p。尝试检查任何可以实际看到原始响应的服务器,我很确定它是否不起作用,或者客户端代码丢失了某些东西,或者服务器配置了一些不正确的东西。
  • 我正在尝试这样:``` webview.loadURL(http://localhost:3000/posturl, { postData: [{ type: 'rawData', bytes: Buffer.from('token=token&redirectTo=redirect_url') }] }); ```
  • 服务器请求参数和正文都为空。
  • @MuhammadYawarAli 不,我看到的和你看到的一样,服务器上的请求正文是空的
【解决方案2】:

一定要设置extraHeaders:

webview.loadURL(url, {
  postData: [{
    type: "rawData",
    bytes: Buffer.from("foo=bar")
  }],
  extraHeaders: "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
});

【讨论】:

  • any idea 如何捕获webview 的请求/响应?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2021-10-25
  • 2022-07-07
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多