2016-06-15 12 views
0

私は既存のPHPサイトを認証し、その中でいくつかのリクエストを実行する必要があるionic2アプリを作っています。私は、サイトのソースに対する制御やアクセス権を持っていません。私はCORSの問題を持つべきではありませんionic2使用していますので は、私は手動でも、私はデータ/ login.php 問題でのページへのログイン要求を行うサービスを作っ角2のHTTPポストを模擬してフォームをシミュレートしよう

テスト目的のためにクロームでそれを無効にログインは常に失敗し、_bodyは常に ""です。

また、セッションを維持するように設定されたCookieを取得して保存する方法もわかりません。

ここでログインサービスの関連するコードです:

POST /data/login.php HTTP/1.1 
Host: [website] 
Connection: keep-alive 
Content-Length: 55 
Cache-Control: max-age=0 
Origin: [website] 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.33 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Referer: http://www.lions.it/data/login.php 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

要求データ: usr=[username]&psw=[password]&invia_annuario=Accedi

doLogin(username, password) { 

    var headers = new Headers(); 
    headers.append('content-type', 'application/x-www-form-urlencoded') 

    var params = new URLSearchParams(); 
    params.append('usr', username); 
    params.append('psw', password); 
    params.append('invia_annuario', 'Accedi'); 


    this.http.post(this.loginPage, params.toString(), { headers: headers }) 
     .subscribe(
     data => { 

      console.log(data); 


     }, 
     Error => { console.log(Error) }, 
     () => { console.log("Done") } 
     ); 
} 

はここでブラウザからの本当の要求が

適切な要求のようになります

応答SE:

HTTP/1.1 200 OK 
Date: Wed, 15 Jun 2016 13:34:24 GMT 
Server: Apache 
X-Powered-By: PHP/5.5.33 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Refresh: 0; URL=./index.php 
Set-Cookie: PHPSESSID=6qp5p3f8tm7bm3hqgttfqk20m1; path=/ 
Content-Length: 0 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

私に製造依頼:

POST /data/login.php HTTP/1.1 
Host: [website] 
Connection: keep-alive 
Content-Length: 55 
Origin: http://localhost:8100 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.33 Safari/537.36 
content-type: application/x-www-form-urlencoded 
Accept: */* 
Referer: http://localhost:8100/?ionicplatform=android 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 
Cookie: PHPSESSID=ua37v7sgojddlnt2d961t5gu33; legatus_post_views_count_22=1 

応答:

HTTP/1.1 200 OK 
Date: Wed, 15 Jun 2016 13:28:11 GMT 
Server: Apache 
X-Powered-By: PHP/5.5.33 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Refresh: 0; URL=./index.php 
Content-Length: 0 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

どのように適切にリモートサイトに要求を送信しないとどのように私はそのセッションクッキーを得るのですか?

答えて

0

あなたは、フォームデータを構築する代わりにsetメソッドを使用するように試みることができる:https://plnkr.co/edit/DknaczJrInjDnmOkLR6r?p=preview

var params = new URLSearchParams(); 
params.set('usr', username); 
params.set('psw', password); 
params.set('invia_annuario', 'Accedi'); 

このplunkrを参照してください。

+0

これは別のことはしていないようですが、私はまだ空のボディと他の手がかりと同じ応答を得ています – MaddoScientisto

+0

どのバージョンのAngular2を使用しますか?私はこの方法で 'URLSearchParams'クラスを使用しています... –

+0

私の場合、あなたのコードで、リクエストが正しく送信されます。このplunkrを参照してください:https://plnkr.co/edit/DknaczJrInjDnmOkLR6r?p=preview。 –

関連する問題