2016-10-04 2 views
1

У меня есть контроллер WebAPI, что после того, как я вызываю его, я хочу, чтобы перенаправить меня на другой сайтWebAPI перенаправлять на внешний сайт

Вот мой C# код

public async Task<HttpResponseMessage> Login(LoginParameters parameters, [FromUri]string returnUrl) 
{ 
    //same validations 
    var response = Request.CreateResponse(HttpStatusCode.Moved); 

    response.Headers.Location = new Uri("Http://www.google.com"); 

    return response; 
} 

Мой Javascript код выглядит следующим образом

Глядя на консоль хром, я понимаю, что вызов http POST возвращает httpstatus = 302. Затем я вижу еще 2 запроса к запросам на google.com, но моя страница не перенаправлена. Так что я делаю неправильно?

Заранее спасибо

ответ

1

При использовании $http, это использует XMLHttpRequest объект, который не регулирует местоположение пользователя. Он даже будет следовать переадресации. У вас есть несколько вариантов:

  • Вы можете вернуть новое местоположение в поле, а затем в .then обратного вызова, назначение window.location вызвать редирект.

  • Вы можете использовать стандартную форму для публикации на ресурс, а затем браузер будет соответствующим образом перенаправлять.

0

Я бы порекомендовал вас посмотреть в angular interceptors. Вы можете «перехватить» ответ, проверить код состояния и перенаправить с помощью window.location или $location. Это довольно гибко, поэтому вы пишете логику в одном месте.

Редактировать: это не работает, потому что, похоже, вы не можете catch a 302. Согласно этому сообщению, появляется запрос, который автоматически перенаправляется, и ответ, который вы получите, отправляется из перенаправленного местоположения. В сообщении OP - ответ был пуст, потому что OP был перенаправлен в другой домен, что привело к междоменному запросу (так что имейте это в виду, если ваши переадресации будут делать то же самое), но предлагаемым решением было проверить ответ чтобы увидеть, содержит ли он данные с перенаправленной страницы.

+1

http://stackoverflow.com/questions/18737674/handle-http-302-response-from-proxy-in-angularjs –

+0

О, это интересно! Я этого не знал! Благодаря! – Zach

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