URL моего API имеет обратную косую черту (\ x01 \ x02), вызывая ошибку apache 400. Как удалить эти обратные слеши из URL - PullRequest
0 голосов
/ 25 марта 2020

Я управляю приложением, которое получает запросы через API. Некоторые запросы содержат недопустимые символы. URL / API запроса выглядит следующим образом:

/up/100.php?f=0&t=n\x01\x02&...

Эти \x01\x02 заставляют Apache2 выдавать 400 ошибок. Я не могу изменить / изменить URL. Мне нужно исправить мой apache, чтобы принять и обработать этот URL. Я попытался mod_rewrite, но не смог найти правильный.

Любая помощь?

Обновление и решение

Сейчас, Я обнаружил, что запрос действительно является некорректным URL. Итак, что я сделал, чтобы решить проблему? Я создал пользовательскую страницу обработки ошибок, чтобы очистить URL-адрес и заставить его работать.

1 Ответ

0 голосов
/ 28 марта 2020

Попробуйте следующее в верхней части вашего .htaccess файла:

RewriteEngine On
RewriteCond %{QUERY_STRING} (.*)\\x01\\x02(.*)
RewriteRule ^up\.php$ /$0?%1%2 [R,L]

Двойной обратный слот sh в CondPattern необходим для соответствия одному обратному слэсу sh в строке запроса, поскольку в качестве управляющего символа в регулярном выражении PCRE используется обратный символ sh.

Обратные ссылки %1 и %2 соответствуют символам по обе стороны последовательности, которую вы хотите удалить. $0 - это просто обратная ссылка на совпавший URL-путь (сохраняет повторы).

ОДНАКО, запрос вида /up.php?f=0&t=n\x01\x02&... обычно не вызывает 400 ответа. Последовательность символов \x01\x02 в URL - это просто буквенная последовательность символов: \, x, 0, 1 и др. c. (в данном контексте это не закодированный символ).

Итак, если вы получаете ответ 400, вполне возможно, что что-то другое (возможно, правило mod_security?) вызывает этот ответ - который, возможно, находится вне вашего контроля.

...