Linux 在web浏览器中作为HTTP POST请求(而不仅仅是GET)打开URL的脚本
如何从命令行脚本中打开URL作为URL的POST请求?我想在Linux、Windows和MacOS上实现这一点,所以这是一种跨平台的实现方式 对于其中的每一项,我都可以使用以下命令打开对URL的GET请求:Linux 在web浏览器中作为HTTP POST请求(而不仅仅是GET)打开URL的脚本,linux,windows,macos,http,shell,Linux,Windows,Macos,Http,Shell,如何从命令行脚本中打开URL作为URL的POST请求?我想在Linux、Windows和MacOS上实现这一点,所以这是一种跨平台的实现方式 对于其中的每一项,我都可以使用以下命令打开对URL的GET请求: xdg open[url]-Linux 启动[url]-Windows 打开[url]-MacOS 。。。但是我看不到一种做POST请求的方法。可能吗?如果可能,如何实现 此外,展示如何在请求中添加帖子正文也将不胜感激。仅供参考,我正在编写的脚本是用Ruby编写的,所以任何内置到操作系统
-Linuxxdg open[url]
-Windows启动[url]
-MacOS打开[url]
为了澄清这一点,我希望在默认浏览器中打开它,而不仅仅是发出POST请求并获得结果。如果您使用的是ruby,则可以使用
NET::HTTP
库:
很抱歉,没有可靠的方法跨浏览器和跨操作系统执行此操作。当我们在IE8中构建加速器时,IE团队花了很多时间研究这个话题
最接近的方法是将HTML页面写入具有自动提交表单(或XmlHttpRequest)的磁盘,然后调用浏览器加载将提交表单的页面。这将您的代码限制为仅提交从浏览器提交的合法表单(例如,仅提交可能的内容类型等)。我不知道我的解决方案跨浏览器和平台的兼容性如何 但不是使用@EricLaw所述的临时文件,
您可以使用数据URL中的自动提交表单对该html进行编码,就像我在这里所做的那样:
谢谢,但我希望它能在web浏览器中打开,而不仅仅是发出请求。我已经更新了问题描述来澄清这一点。是的,我认为这可能是不可能的。谢谢你。如果其他人想尝试类似的方法,我使用的方法是通过ruby向服务器发送帖子,返回一个过期的唯一id,然后发布一个关于该唯一id的GET。虽然没有直接帖子那么优雅,但应该足够了。
require 'net/http'
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body