Значение параметра усекается с первого пробела (остальная часть URL пропала) - PullRequest
2 голосов
/ 06 июля 2011

Проблема

У меня есть HTML-форма и скрипт perl cgi.pm.

Поиск введен в текстовое поле.Если в записи есть пробел, любые другие параметры (например, выбранные переключатели) обрезаются.ех.'hello world', приводит к only 'hello'.

Таким образом, URL имеет значение: query=hello вместо query=hello+world&name=tag&name1=tag1....

Вызов вСкрипт perl: $search_key = param('query') не содержит пробела или чего-либо после него.Только $ search_key = 'hello'.

Путаница

Работает нормально, когда я использую свой собственный веб-сервер apache на localhost.Но проблема возникает при попытке выложить его в интернет.Единственные различия в коде: (1) гиперссылки url в скрипте perl - search2011.cgi против multwordsearch.cgi (не проблема), (2) страница промежуточной загрузки - loading.cgi и (3) URLв вызове "action =" в HTML-коде:

Работает: <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 ... before / cgi-bin /, он ничего не сделал.Я попытался $search_key =~ s/ /+/, но ничего не получилось, поэтому я знаю, что пространство не заходит так далеко.Кроме того, гиперссылки работают правильно (т. Е. Весь URL: все теги «имя-значение» печатаются после запроса).Я попытался увеличить размер текста.

Если поиск - «привет + мир», он работает как следует, поэтому проблема в том, что что-то неправильно интерпретирует пространство.

Вопрос

Проблема в том, что он усекается при переходе из формы, либо при нажатии кнопки, либо просто из текстового поля (или где-то в cgi.pm).

Может ли это бытьпроблема с моей стороны?Я понимаю, что информация ограничена, но это все, что отличается!Есть идеи, что еще попробовать?

Дайте мне знать, есть ли что-нибудь еще, что вам нужно.

1 Ответ

0 голосов
/ 07 июля 2011

Я думаю, что проблема заключается в вашей промежуточной странице, которую вы сбрасывали со счетов. Тот, который работал, был multiwordsearch.cgi, а тот, который не работает, был loading.cgi. Поэтому я предполагаю, что loading.cgi является промежуточной страницей.

Это определенно будет причиной проблемы. Я предполагаю, что он получает параметры и затем перенаправляет на multiwordsearch.cgi. Это объясняет, почему ваши параметры POSTed, равные loading.cgi, попадают в строку запроса multiwordsearch.cgi. Так что, очевидно, есть ошибка при создании URL перенаправления.

Поэтому я предлагаю вам взглянуть на строительный код URL в loading.cgi. Или разместите здесь, если вам нужна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...