2017-02-18 1 views
0

私は応答にヘッダーを設定エクスプレス/ NodeJS REST APIを構築しました:Express/Node Repsonseヘッダーが失われましたか?

router.route("/api/articles") 
    .get(authCheck, function (req, res) { 
     let pagination = req.get('Pagination').split(","); 
     let currentPage = pagination[0]; 
     let currentPageSize = pagination[1]; 
     let skip = (currentPage - 1) * currentPageSize; 
     var response = {}; 
     articlesOp.count({}, function (err, totalItems) { 
      articlesOp.find({}, function (err, data) { response = data; }, { 
       sort: { 
        artNr: 1 
       } 
      }).skip(skip > 0 ? ((currentPage - 1) * currentPageSize) : 0).limit(currentPageSize).exec(function (err, docs) { 
       if (err) 
        res.json(err); 
       else { 
        res.setHeader('Pagination', '{"page": ' + currentPage + ', "pageSize": ' + currentPageSize + ', "totalItems": ' + totalItems + ', "totalPages": ' + Math.ceil(totalItems/currentPageSize) + '}'); 
        res.setHeader('X-Foo', 'bar'); 
        res.json(response); 
       } 
      }); 
     }); 

    }); 

ポストマンでthsi APIを実行すると、私はfloowingヘッダが設定されていることウンターヘッダーセクションを参照してくださいすることができます

Access-Control-Allow-Origin →* 
Connection →keep-alive 
Content-Length →3697 
Content-Type →application/json; charset=utf-8 
Date →Sat, 18 Feb 2017 10:05:10 GMT 
ETag →W/"e71-NQjTx6uFpe8cuvaoLUXPOg" 
Pagination →{"page": 3, "pageSize": 10, "totalItems": 442, "totalPages": 45} 
X-Foo →bar 
X-Powered-By →Express 

私のAngular2アプリケーションからコードを実行すると、 "Content-Type"以外のヘッダーは存在しません。

res.setHeader("access-control-expose-headers", "Pagination"); 
let headers = new Headers(); 
if (page != null && itemsPerPage != null) { 
      headers.append('Pagination', page + ',' + itemsPerPage); 
     } 

     return this.authHttp.get(this._baseUrl + 'articles', { 
      headers: headers 
     }) 
      .map((res: Response) => { 

       console.log(res.headers.keys()); 
       pResult.result = res.json(); 

       if (res.headers.get("Pagination") != null) { 
        //var pagination = JSON.parse(res.headers.get("Pagination")); 
        var paginationHeader: Pagination = this.itemsService.getSerialized<Pagination>(JSON.parse(res.headers.get("Pagination"))); 
        console.log(paginationHeader); 
        pResult.pagination = paginationHeader; 
       } 
       return pResult; 
      }) 
      .catch(this.handleError); 

答えて

0

CORSの例外を追加する

は、トリックを行います(あるいは、少なくとも私はそれらを見つけるカント)
関連する問題