Разрешить перенаправление URL
Я настроил перенаправление URL на http://freedns.afraid.org/ чтобы я мог изменить хост на файл, который загружает мое приложение, без необходимости изменения кода в моем приложении.
Проблема в том, что мне нужно разрешить правильный URL-адрес перед загрузкой файла. Я попробовал метод, который нашел здесь в SO, но он не работал (Webrequest).
Поэтому я предполагаю, что они не используют общий редирект.
Как вы можете решить реальный URL / IP?
ОБНОВИТЬ:
У меня есть другой поддомен на сайте freedns, и если вы сделаете для него строку загрузки, вы получите страницу, на которую он должен перенаправить. Может быть, эта информация может быть полезна.
UPDATE2:
Вот код, который я использую для получения другой веб-страницы:
WebClient client = new WebClient();
string xml = client.DownloadString(new Uri("myfreednshere"));
Таким образом, запустив этот код, я получаю строку веб-страницы b, на которую перенаправляется myfreednshere.
Это означает, что веб-клиенту удается разрешить перенаправление URL. Есть ли какой-нибудь код, который я могу использовать, который просто разрешает перенаправление?
Update3:
Это ответ, который я получаю с httprequest:
{X-Abuse: URL redirection provided by freedns.afraid.org - please report any misuse of this service
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Cache-Control: public, max-age=15
Content-Type: text/html
Date: Wed, 09 Nov 2011 21:55:21 GMT
Server: Apache/1.3.41 (Unix) PHP/5.3.6 with Suhosin-Patch
X-Powered-By: PHP/5.3.6
}
3 ответа
Я заметил, что по крайней мере на одном сайте fear.org (http://fb.afraid.org, единственном домене, который я смог получить для быстрой проверки) не используется перенаправление HTTP, перенаправление 301 или прокси. Он использует кадры. Итак, ваш оригинальный код должен работать:
WebClient client = new WebClient();
string xml = client.DownloadString(new Uri("myfreednshere"));
С небольшой модификацией я использовал этот код:
WebClient client = new WebClient();
string html = client.DownloadString(new Uri("http://fb.afraid.org"));
у результата вызова был реальный URL (http://www.fragbite.com) в трех местах, один раз в комментарии, один раз в источнике фрейма и один раз в ссылке в теге noframes. Вы должны быть в состоянии разобрать URL, если вам это нужно программно.
Класс WebClient следует за перенаправлениями. Попробуйте использовать HttpWebRequest:
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.AllowAutoRedirect = false;
После того, как запрос сделан, один из заголовков HTTP "Location" указывает местоположение, куда он был перенаправлен (но не следовал, потому что AllowAutoRedirect был отключен)
Итак, вы хотите 301 Redirect?
Это может быть обработано несколькими способами. Если это.NET, и если вы используете IIS 7, вы можете использовать модуль перезаписи URL ( http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/) или вы можете изменить файл web.config напрямую, если знаете, что делаете.
<system.webServer>
<httpRedirect enabled="true" destination="http://domain.com/products" httpResponseStatus="Permanent" />
</system.webServer>
Перейдите по этой ссылке для получения дополнительной информации о том, как обращаться с 301 http://knowledge.freshpromo.ca/seo-tools/301-redirect.php