我想从外部脚本发送一个POST
请求Electron webview。目前我只是将src
属性设置为触发页面加载,该页面加载会发送GET
请求:
<webview id="view">
<script>
document.getElementById('view').setAttribute('src', 'http://example.com/?foo=bar');
</script>
有没有办法通过发送POST
请求将网页视图导航到网址?也许是webview
的一种方法,而不仅仅是用src
进行黑客攻击?
答案 0 :(得分:6)
您可以使用.executeJavaScript
在webview上下文中执行任意代码。
此外,您的代码可以访问所有浏览器内置的api。最简单的方法是使用fetch
,方法设置为post
。
在您的情况下(如果已经加载了webview;例如已设置了.src
):
document.getElementById('view')
.executeJavaScript('fetch("http://example.com/?foo=bar", {method: "post"});');
一些评论:
.src
控制。http:
拨打https:
。答案 1 :(得分:3)
现在,在文档中有一个新的<webview>.loadURL()
方法,其中包含postData
选项。我还没有使用它,但它看起来与我过去所寻找的完全一样。
在此期间,他们似乎将其添加为一项功能。
答案 2 :(得分:1)
基本上,Webview元素没有类似&#34;方法&#34;的属性。 Form,因此您无法为其请求指定特定的HTTP方法。我建议您使用AngularJS或任何其他JS框架来存档您的目的。
答案 3 :(得分:1)
我发现有两种解决方法,因为<webview>
目前似乎无法发送POST
请求。
GET
发送。事实证明,我使用的网站确实允许这样做,如果我没有真正尝试过,我就不会猜到了。POST
,然后使用手册POST
返回的HTML替换webview中页面的HTML。您可以使用.executeJavaScript()
和/或Electron的IPC来实现此目的。两种解决方法都不适用于所有情况。可能值得向Electron团队提交功能请求......
所以我继续提交功能请求。您可以在此处关注:https://discuss.atom.io/t/add-http-post-method-to-webview/29702