html - 参数值在第一个空格处被截断(URL 的其余部分消失)

标签 html perl cgi

问题

我有一个 html 表单和一个 perl cgi.pm 脚本。

在文本字段中输入搜索。如果条目中有空格,则任何其他参数(如选定的单选按钮)都会被截断。前任。 'hello world',结果 'hello'。

所以 url 的值为:query=hello而不是 query=hello+world&name=tag&name1=tag1... .

perl 脚本中的调用是:$search_key = param('query')不包含空格或后面的任何内容。 $search_key = 仅“你好”。

困惑

当我在本地主机上使用我自己的网络服务器 apache 时,它​​工作正常。但是当试图把它放到网上时,问题就出现了。代码中的唯一区别是:(1)perl 脚本中的 url 超链接 - search2011.cgimultwordsearch.cgi (不是问题),(2) 中间加载页面 - loading.cgi , 以及 (3) HTML 代码中“action=”调用中的 url:

工作: <form name="search_option" action="http://localhost/cgi-bin/multiwordsearch.cgi" method="get" onSubmit="return checkform(this);">

对比

非工作:

<form name="search_option" action="/cgi-bin/loading.cgi" method="post" onSubmit="return checkform(this);">
        <h2><font color=forestgreen>Biomimetic Search</font></h2>
        <input type="text" name="query" size="40" />

另外 尽管有“POST”,它仍然显示 query=hello !

我试过 http... 在/cgi-bin/之前,它什么也没做。我试过 $search_key =~ s/ /+/但它没有做任何事情,所以我知道空间不会那么远。此外,超链接工作正常(即整个 URL:查询后打印所有名称-值标签)。我试过增加文本的大小。

如果搜索是“hello+world”,它会正常工作,所以问题是没有正确解释空格。

问题

问题是它在来自表单时被截断,无论是在按下按钮时,还是仅来自文本字段(或 cgi.pm 中的某处)。

这对我来说是个问题吗?我知道信息有限,但这就是不同的!有什么其他尝试的想法吗?

如果您还需要什么,请告诉我。

最佳答案

我认为问题出在您打折的中间页面。 有效的是 multiwordsearch.cgi,无效的是 loading.cgi。所以我假设 loading.cgi 是中间页面。

这肯定是导致问题的原因。我假设它正在获取参数,然后重定向到 multiwordsearch.cgi。这解释了为什么您向 loading.cgi 发送的参数以 multiwordsearch.cgi 的查询字符串结尾。所以它在构建重定向 URL 时显然存在错误。

所以我建议你看看loading.cgi中的URL构建代码。如果您需要帮助,也可以在此处发布。

关于html - 参数值在第一个空格处被截断(URL 的其余部分消失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601830/

相关文章:

php - 制作视频 "watch page"

html - 修改元素tabindex顺序

perl - 我怎样才能持久化一个大的 Perl 对象以便在运行之间重复使用?

html - CGI POST 方法不起作用

html - CGI-通过 HTML 获取用户给出的 10 个输入的平均值

javascript - 如何加载登录 https ://page in a http://Page

android - 地址栏隐藏 iOS/Android/Mobile Chrome 时背景图片跳转

arrays - @a[-@a..-2] 是什么意思?

perl - 散列键周围的引号是 Perl 中的一个好习惯吗?

c++ - 脚本头过早结束 : CGI + C++