2016-05-18 14 views
1

でセッションを設定傾ける角度2でこれを手に入れた:HTTPポストは、ポスト

let body = JSON.stringify(this.jiraConfig); 
let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 

this.http.post('http://localhost:3007/api_jira/login', body, options).subscribe(... 

私は私のバックエンドでセッションを保存する必要があります。私は郵便配達員からそれを実行するときに動作します。しかし、角度から投稿すると、バックエンドはセッションを設定しません。

なぜ私の投稿にオプションを設定する必要がありますか?私のIDEはオプションだと言っていますか?とにかく、セッションを保存できるようにヘッダーにいくつかの設定を挿入する必要があるかもしれません。何か案は?

これは私の郵便配達依頼がgenereatedさ アップデートはカールする:これは、クロームのdevのツール、ネットワークからの情報が

curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Postman-Token: c730242e-0497-7344-35b1-f0addca9e7b6" -d '{"host":"xxx","basic_auth":{"username":"xxx","password":"xx"}}' "http://localhost:3007/api_jira/login" 

で、ヘッダー・タブ:

Request URL:http://localhost:3007/api_jira/login 
Request Method:POST 
Status Code:200 OK 
Remote Address:[::1]:3007 
Response Headers 
view parsed 
HTTP/1.1 200 OK 
X-Powered-By: Express 
Access-Control-Allow-Origin: * 
Vary: X-HTTP-Method-Override 
Content-Type: application/json 
set-cookie: connect.sid=s%3AM04ERSgj6F-5wKHwX1XY3G8CO6ZqfEHX.Xflr7ueknyg%2FYHvHIDqBp4ogfddfVdRwJS7GV4bniMk; Path=/; Expires=Thu, 19 May 2016 08:17:58 GMT 
Date: Thu, 19 May 2016 08:16:58 GMT 
Connection: keep-alive 
Content-Length: 0 
Request Headers 
view parsed 
POST /api_jira/login HTTP/1.1 
Host: localhost:3007 
Connection: keep-alive 
Content-Length: 89 
Pragma: no-cache 
Cache-Control: no-cache 
Origin: http://localhost:4200 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 
Content-Type: application/json 
Accept: */* 
Referer: http://localhost:4200/ 
Accept-Encoding: gzip, deflate 
Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4,ca;q=0.2,nb;q=0.2 
Request Payload 
view parsed 
{"host":"xx.atlassian.net","basic_auth":{"username":"xx","password":"xx"}} 

クローム投稿はに変換しましたカール:

curl 'http://localhost:3007/api_jira/login' -H 'Pragma: no-cache' -H 'Origin: http://localhost:4200' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4,ca;q=0.2,nb;q=0.2' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36' -H 'Content-Type: application/json' -H 'Accept: */*' -H 'Cache-Control: no-cache' -H 'Referer: http://localhost:4200/' -H 'Connection: keep-alive' --data-binary '{"host":"xx.atlassian.net","basic_auth":{"username":"xx","password":"xx"}}' --compressed 

これは私が私のセッションでいくつかのデータ(jiraConfig)にしようとしている私のバックエンド(ノード)である:

server.post('/api_jira/login', function(req, res){ 
    var jiraConfig = req.body; 
    checkIfJiraConfigIsValid(jiraConfig, function(error, resp){ 
     if(error){ 
     res.status(401).send('Not authorized') 
     }else{ 
     req.session.jiraConfig = jiraConfig; 
     res.status(200).send(); 
     } 
    }) 
    }); 
+0

あなたは郵便配達で何をしましたか質問に追加できますか?ありがとう! –

+1

@ThierryTemplier、私は質問を更新しました。 – Per

+0

ありがとう!セッションではどういう意味ですか?バックエンドはペイロードを使用してセッションを初期化しますか?また、開発ツール(ネットワークタブ)からAngular2のリクエストの詳細を提供できますか? –

答えて

0

が可能に問題がContent-Typeヘッダーではありませんので、あなたがHeadersクラスをインポートするのを忘れていることだろうあなたの要求に設定され、サーバはペイロードをデシリアライズできません。

import { Headers, ... } from '@angular/http';