Разрешить перенаправление URL - PullRequest
0 голосов
/ 10 ноября 2011

Я установил перенаправление 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 ]

2 голосов
/ 10 ноября 2011

Я заметил, что, по крайней мере, один сайт 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-адрес если вам это нужно программно.

1 голос
/ 10 ноября 2011

класс WebClient следует перенаправлениям.Попробуйте использовать HttpWebRequest:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.AllowAutoRedirect = false;

После того, как запрос сделан, один из заголовков HTTP «Расположение» дает местоположение, куда он был перенаправлен (но не следовал, потому что AllowAutoRedirect был отключен)

0 голосов
/ 10 ноября 2011

Итак, вы хотите 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

...