2017-06-21 17 views
0

Ionicフレームワークを使用して既存のWebサイトをハイブリッドアプリに変換しようとしています。ログイン時に、サーバはセッションクッキーを送信して他のコールで使用するようにしますが、クッキーはブラウザに保存されず、アクセス試行時にログインリダイレクトされます。私はログインの送信に以下の機能を使用します。Ionic/Angular AppでCookieベースの認証が機能しない

let headers = new Headers(); 
headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
let url = 'http://localhost/api/auth/login'; 

var data = 'username=' + this.credentials.username + '&password=' + 
      this.credentials.password + '&captchaResponse='; 

this.http.post(url, data, {headers: headers}) 
.subscribe(data => { 
    if(data.json().result == 'success'){ 
     this.navCtrl.setRoot(FaultsPage); 
    } else { 
     alert('Wrong username or password'); 
    }  
}, err => { 
    console.error('Error: ', err); 
    alert('Something went wrong, try again later'); 
}); 

サーバーは資格情報を受け入れ、セッションCookieを送信します。 Access-Control-Allow-Credentialsは、サーバー側でtrueに設定されています。

また、手動でCookieを設定しようとしましたが、Set-Cookieヘッダーにアクセスできません。

My Ionicバージョンは3.4.0で、Angular 4.2.2を使用しています。

+0

編集:WebサイトのサーバーがCORSをサポートしていないため、CORS機能をサーバーのローカルコピーに実装しているため、URLはlocalhost上にあります。 – Eldarfin

答えて

0

問題が見つかりました。送信元URLと宛先URLの両方がlocalhostであったため、ブラウザはポート番号を無視して独自のCookieを生成していると考えました。これを解決するため、リンク先URLのドメインをlocalhostからコンピュータのユーザー名に変更しました。さらに、ログイン要求は、WithCredentialsをtrueに設定する必要があります。

関連する問題