2016-10-04 14 views
1

にされるリダイレクト私のjavascriptのコードは、このWEBAPIは、私のC#コード私はそれを呼び出す後、私はそれが別のサイトここ</p> <p>に私をリダイレクトすることWEBAPIコントローラを持っている外部サイト

ように書き

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; 
} 

クロームコンソールを見ると

'user strict' 
var login = function ($scope, $http) { 

    var parameters = { 
     userName: userName, 
     password: password 
    }; 

    var url = '/api/user/Login'; 

    $http.post(url, parameters); 
     .then(function(response){ 
      /*some random code that i will remove */ 
     }); 
}; 

login.$inject = ['$scope', '$http']; 
module.exports = login; 

私は、HTTPのPOST呼び出しが戻っはhttpStatus = 302は、その後、私はgoogle.comへのリクエストに対して2以上の要求を参照してください、私のページがリダイレクトされていないことを実現しています。だから私は何が間違っているの?事前

答えて

1

おかげであなたは$httpを使用し、これはユーザーの位置を調整しませんXMLHttpRequestオブジェクトを使用しています。それはリダイレクトにも続くでしょう。あなたはカップルのオプションがあります。

  • あなたがリダイレクトを引き起こすことがwindow.locationを割り当て、その後、.thenコールバックで、フィールドとして新しい場所を返すことができます。

  • 標準フォームを使用してリソースに投稿すると、ブラウザはリダイレクトに適切に従います。

0

あなたはangular interceptorsを調べることをお勧めします。応答を「インターセプト」し、ステータスコードを確認し、window.locationまたは$locationを使用してリダイレクトすることができます。これは非常に柔軟なので、ロジックを1つの場所に書き込むことができます。

編集:これはあなたがcatch a 302できないように見えるため、動作していないようです。この投稿によると、リクエストは自動的にリダイレクトされ、戻ってくる返信はリダイレクトされた場所からのものだと思われます。 OPのポストでは、OPがクロスドメインリクエストにつながった別のドメインにリダイレクトされたため、レスポンスは空でしたが(リダイレクトで同じことが行われる場合はこの点に注意してください)、提案された解決策はレスポンスを確認することでしたリダイレクトされたページのデータが含まれているかどうかを確認します。

+1

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

+0

ああ、面白いです!私はそれを知らなかった!ありがとう! – Zach

関連する問題