【问题标题】:Submit webform via URL only?仅通过 URL 提交网络表单?
【发布时间】:2012-11-17 00:52:05
【问题描述】:

我不确定这是否属于这里,所以不要投反对票,只要让我知道是否是这样,我会尽快继续。

无论如何,有一个website 有一个搜索页面,当点击搜索按钮时,它不会在 URL 中包含搜索查询。

搜索完后,页面被重定向到ssearch.asp,但正如所说,查询不存在。

我的问题是是否有办法仅通过 URL 提交搜索值。

我想知道是否有办法伪造搜索提交按钮并发布搜索词 根据表单字段名称通过 URL。

输入框的名字是search,所以我试了这个网址:http://www.torec.net/ssearch.asp?search=query,但是不行,服务器返回:

服务器错误。

需要明确的是,我不是在寻找服务器端解决方案,实际上也不是 HTML 解决方案,我只是希望能够将一个普通的旧 URL 粘贴到我的浏览器地址栏中并在那里。

这可能吗?

更新

此链接失效:
http://www.torec.net/ssearch.asp?search=dark&page=1

虽然这个是:
http://www.torec.net/ssearch.asp?search=dark&page=2

有什么办法绕过这个吗?

【问题讨论】:

    标签: url http-post url-parameters forms form-post


    【解决方案1】:

    编辑:无法直接创建指向首页的链接。但是,您可以通过创建表单轻松地将用户发送到第一页:

    <form id="postForm" method="post" action="http://www.example.com/search">
        <input type="text" name="search" value="q">
    </form>
    

    然后在用户点击伪链接时提交表单:

    document.getElementById("postForm").submit();
    

    这也可以通过在地址栏中输入 JavaScript 代码来完成:

    javascript:a=document.createElement("form");a.method="POST";a.action="http://www.torec.net/‌​ssearch.asp?search=dark&amp;page=2";i=document.createElement("input");i.name="search";i.value="q";a.appendChild(inpu‌​t);a.submit();

    【讨论】:

    • 我可以将用户发送到的唯一方法是纯 URL,如果这不可能,那么答案是否定的......
    • @Shimmy 可以将用户发送到第一页——他们所要做的就是访问您的网页。阅读我修改后的答案。
    【解决方案2】:

    有时服务器会混淆 GET 和 POST 参数,如 PHP $_REQUEST 哈希。但是,通常它们是分开的 - 并且期望其参数在 multipart/form-data 中的服务器可能根本不会查看 URL。在这种情况下,就像这里一样,您必须构造一个 POST 请求。在客户端,您可以通过 AJAX 或通过构建和发布表单来完成;在服务器端,您可以使用curl 或库。你没有说你想用它做什么(以及你想在哪里使用它),所以恐怕你只是得到了一般性的答案。

    编辑:这是 JavaScript 半解决方案。您必须已经在某个页面上(即不能在 _blank 上使用它),我不确定它是否适用于所有浏览器。

    javascript:d=document;f=d.createElement("form");h=d.createElement("input");f.setAttribute("method","post");f.setAttribute("enctype","application/x-www-form-urlencoded");f.setAttribute("action","http://www.torec.net/ssearch.asp");h.setAttribute("type","hidden");h.setAttribute("name","search");h.setAttribute("value","query");f.appendChild(h);d.body.appendChild(f);f.submit();
    

    【讨论】:

    • 为了清楚起见,我无法控制服务器,也无法控制客户端,我不想使用任何 html,只是粘贴在浏览器中的简单普通旧 URL地址栏。这可能吗?
    • 总之 - 不。简而言之,技术上是的,使用 javascript URL。
    • 你能扩展一下js url吗?
    • 我相信他的意思是你会把这个粘贴到你的地址栏中:javascript:var a=document.createElement("form");a.method="POST";a.action="http://www.torec.net/ssearch.asp?search=dark&amp;page=2";var i=document.createElement("input");i.name="search";i.value="q";a.appendChild(input);a.submit();
    • 您是否注意到“必须加载页面”?此外,这是一个 hack,因此“技术上是的”。如果您有其他解决方案,那就更好了。正如您所注意到的,它们似乎确实允许您进入第二页;并且第一页甚至在他们自己的界面中也被破坏了(你不能回到第 1 页)。
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2014-02-14
    • 2017-01-21
    • 2015-03-06
    • 2021-01-27
    相关资源
    最近更新 更多