2010-02-14 1 views
2

У кого-нибудь есть идея небрежно относительно того, почему ссылка с "@ « в нем работает в моем браузере, но когда я иду, чтобы получить эту конкретную ссылку в моем коде HttpWebRequest, я получаю ошибку 405?Почему связь с «@» работает в моем браузере, но C# HttpWebRequest дает 404 (Удаленный сервер возвратил ошибку: (405) Метод не разрешен.)

The remote server returned an error: (405) Method Not Allowed.

Пример ссылка на вопрос:

http://internal_link/@api/deki/site/logo.png 

благодаря

ответ

5

Знак @ является зарезервированным символом в URL-адресе.

reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | 
       "$" | "," 

(см http://www.ietf.org/rfc/rfc2396.txt)

Так что я хотел бы предложить, чтобы избежать (что-то браузер делает автоматически), используя %40 вместо @.

+0

Это моя мысль точно –

+0

oh .. вы видите, что браузер будет делать это за кулисами? – Greg

+0

@Greg: они должны. Это требование в спецификациях URL. Если кодировщики HTTP-сервера и кодеры HTTP-браузера следуют спецификациям, они могут работать вместе. URL-адрес, который вы вводите в браузере, будет переведен на «правильно сформированный» URL-адрес, так как это будет следовать спецификациям, пока ваш введенный URL-адрес может не отображаться. – Pindatjuh

3

НТТР является запрос HTTP. Серверу все равно, есть ли он из браузера или что-то еще. Если он отклоняет один, а не другой, это потому, что вы не отправляете один и тот же запрос. Некоторые вещи для проверки могут быть пользовательским агентом, куки-файлами или же браузер каким-то образом изменяет знак @ в этом URL-адресе перед его отправкой. Вы можете использовать такую ​​программу, как fiddler, чтобы проверить запрос, отправленный браузером, и изменить код, чтобы убедиться, что он отправляет тот же запрос.

+0

ummm..just run fiddler ... в разделе Inspectors/Raw строка «GET url ...» по-прежнему показывает «@» в том же состоянии (не экранирована). Там отправляются файлы cookie, но все остальные ресурсы со страницы возвращаются на поиски, а не только с «@». Интересно, делает ли Fiddler какой-то перевод под капотом? – Greg

 Смежные вопросы

  • Нет связанных вопросов^_^