Mam problem, z którym nigdy wcześniej się nie spotkałem i myślę, że ma on coś wspólnego z konfiguracją Apache, której nie jestem zbyt dobrze zaznajomiony.apache: zignorowane umlauty w ciągu zapytania (URL) prowadzą do 403
Najpierw jest skrypt php z formularzem wyszukiwania. formularz jest przesyłany za pośrednictwem POST.
to lista wyników wyszukiwania. tutaj oryginalne zapytanie jest przekazywane jako część adresu URL, np .: search.php? id = 1234 & query = foo. to też działa - tak długo, jak długo nie ma przesłuchiwanych znaków (äöüä ...).
tak szybko, jak to przegłosów w zapytaniu, w pierwszej części, która przesyła ciąg kwerendy jak działa POST, ale przepuszczenie (urlencoded) w adresie URL prowadzi do 403.
tak:
search.php?id=1234&query=bar
działasearch.php?id=1234&query=b%E4r
prowadzi do 403 (% E4 = "A" UTF-8 urlencoded)search.php?id=1234&query=b%C3%A4r
prowadzi do 403% C3 (% = A4 "A" UTF-8 urlencoded)- przesyłając umlauty poprzez POST działa
Przekonwertowałem aplikację z iso-8859-1 na utf-8, ale to nie miało znaczenia.
Sprawdziłem również to na mojej lokalnej maszynie, tutaj działa bezbłędnie - zgodnie z oczekiwaniami.
konfiguracja zdalnego serwera (gdzie nie działa):
Apache/2.2.12 (Ubuntu),
Wersja PHP 5.2.10-2ubuntu6.7, Suhosin patch 0.9.7, poprzez CGI/FastCGI
lokalna konfiguracja (tu tych samych prac):
Apache/2.2.8 (Win32) PHP/5.3.5
PHP w wersji 5 .3.5 przez mod_php
Czy ktoś ma pomysł, dlaczego zdalny apache/php-cgi nie akceptuje poprawnie zakodowanych w oknie urla?
Dodatkowe informacje: Próbowałem też utworzyć plik statyczny z umlaut w jego imieniu, a zarówno /t%C3%A4st.php
i /täst.php
dostać serwowane bez problemu. täst.php?foo=täst
kończy się niepowodzeniem.
uwaga: ?foo=%28
, gdzie 28% to "(" działa również
pedantyczny, wiem, ale "ß" nie ma umlautów ... – Stephen
zmartwiony :) jak nazywa się ten zestaw znaków specjalnych? – stefs
czy masz moduł mod_security-like z kilkoma zepsutymi regułami? Czy dzieje się tak również z każdą inną postacią niż ascei? – arnaud576875