【问题标题】:Script to Open URL as HTTP POST request (not just GET) in web browser在 Web 浏览器中将 URL 作为 HTTP POST 请求(不仅仅是 GET)打开的脚本
【发布时间】:2013-03-19 10:04:58
【问题描述】:

如何从命令行脚本打开 URL 作为对 URL 的 POST 请求?我想在 Linux、Windows 和 MacOS 上这样做,所以这是一种跨平台的方法

对于其中的每一个,我可以使用以下方法打开对 URL 的 GET 请求:

  • xdg-open [url] - Linux
  • start [url] - Windows
  • open [url] - MacOS

...但我看不到执行 POST 请求的方法。有可能吗,如果可以,怎么办?

另外,也欢迎展示如何将 POST 正文添加到请求中。仅供参考,我正在编写的脚本是用 Ruby 编写的,因此操作系统内置的任何东西或使用 Ruby 的东西也可以。

更新:

澄清一下,我希望它在默认浏览器中打开,而不仅仅是发出 POST 请求并获取结果。

【问题讨论】:

    标签: linux windows macos http shell


    【解决方案1】:

    如果您使用 ruby​​,您可以使用 NET::HTTP 库:http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html

    require 'net/http'
    uri = URI('http://www.example.com/search.cgi')
    res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
    puts res.body
    

    【讨论】:

    • 谢谢,但我希望它在网络浏览器中打开,而不仅仅是发出请求。我已经更新了问题描述以澄清这一点。
    【解决方案2】:

    抱歉,没有可靠的方法可以跨浏览器和跨操作系统执行此操作。这是我们在 IE8 中构建加速器时 IE 团队花费大量时间研究的主题。

    最接近的方法是将具有自动提交表单(或 XmlHttpRequest)的 HTML 页面写入磁盘,然后调用浏览器加载将提交表单的页面。这将您的代码限制为仅提交可从浏览器提交的合法表单(例如,仅可能的内容类型等)。

    【讨论】:

    • 是的,我认为这可能是不可能的。不过谢谢。如果其他人想尝试类似的方法,我正在使用的工作是通过 ruby​​ 向服务器发送 POST,返回一个过期的唯一 ID,然后在该唯一 ID 上发出一个 GET。不像直接 POST 那样优雅,但应该足够了。
    【解决方案3】:

    我不知道我的解决方案在浏览器和平台之间的兼容性如何。

    但不是使用@EricLaw 描述的临时文件,
    您可以使用数据 URL 中的自动提交表单对该 html 进行编码,就像我在这里所做的那样:

    https://superuser.com/questions/1281950/open-chrome-with-method-post-body-data-on-specific-url/1631277#1631277

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 2015-12-26
      相关资源
      最近更新 更多