Странный запрос: «равный идентификатор косой черты» (=/id) выдает странную ошибку: 501

#php #apache #http #url #query-string

#php #apache #http #url #запрос-строка

Вопрос:

Это самая странная проблема в моей жизни, и я даже не могу ее Погуглить. Это происходит на веб-сайте на базе Apache, написанном на PHP, который использует mod_rewrite (но это не проблема, я попытался удалить файл .htaccess, проблема все еще существует).

Если у меня есть строка запроса, которая выглядит точно или похожа на: =/id я получаю ответ 501:

Метод не реализован

ПЕРЕХОД к / не поддерживается.

Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 404 Not Found.

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

Если это поможет: мой сайт commentards.net , а исходный URL-адрес был запросом входа в OpenID, который выглядит следующим образом:

http://commentards.net/q/user/auth ?openid_identifier=https://www.google.com/accounts/o8/id

из которого строка запроса:

?openid_identifier=https://www.google.com/accounts/o8/Fid

Комментарии:

1. Строка запроса не должна содержать никаких? внутри, вы пробовали с вопросительным знаком в urlencoded?

2. У меня не было проблем с другими запросами. Ваше право, я неправильно использовал этот термин, я изменил свой вопрос

Ответ №1:

Я обратился в службу поддержки, и они сказали, что это mod_security, и отключили его для моего сайта. И теперь он работает нормально. Я должен был начать с этого. В любом случае, спасибо за вашу помощь.

Комментарии:

1. omg большое спасибо за публикацию вашего решения! у меня была аналогичная проблема с параметром GET в json-кодировке, где часть значения параметра была |id — я получал 501 ошибку, и это сводило меня с ума! это был modsec!!!

Ответ №2:

Urlencode ваш параметр (ы) строки запроса.

https://www.google.com/accounts/o8/id становится https://www.google.com/accounts/o8/Fid

http://commentards.net/q/user/auth ?openid_identifier=https://www.google.com/accounts/o8/Fid работает нормально, так что HerrSerker уже ответил на ваш вопрос.

Комментарии:

1. То, что вы дали, было не «… / o8 / id», а «… / o8 / Fid», и именно поэтому это сработало. Первый по-прежнему не работает. Я тестировал с firefox, и firefox кодирует его автоматически. Я использовал meyerweb.com/eric/tools/dencoder чтобы расшифровать указанный вами URL-адрес