【问题标题】:Ionic 2 - Angular 2 http Headers are not being sent along with the requestIonic 2 - Angular 2 http 标头未与请求一起发送
【发布时间】:2016-11-13 02:26:26
【问题描述】:

我正在使用 Ionic 的最新 beta 版本,并且我已经为我的 api 服务器做了一个 http post 方法。但是标头没有与请求一起发送。我使用的代码如下: ** 离子版本 - Beta-8 & Angular 版本 -rc.3

import {Page,App,NavParams} from 'ionic-angular';
import {Headers, Http, RequestOptions} from '@angular/http';
import {Component} from '@angular/core';
import 'rxjs/add/operator/map';

@Component({
    templateUrl : 'build/pages/xyz/xyz.html'
})

export class Xyz{

    form:any;
    token:any;
    constructor(public app:App, navParams:NavParams, public http:Http){

        let code = {abc : 'abc'};
        let headers = new Headers();
        let body = JSON.stringify(code);
        headers.append('Content-Type', 'application/json');
        headers.append('Authorization', 'Bearer ' + "tokenContent");
        let options =new RequestOptions({headers : headers, body:body});
        this.http.post('http://myserver/myapi', options)
            .map(res => res.json())
            .subscribe(
                data=>{
                    console.log(data.message);
                },
                err=>{
                    console.log(err);
                },
                ()=>{
                    console.log("Process Complete");
                }
            );

当我查看 console.log 选项对象和标题时,标题设置正确。但是当我发出 http 请求时,当我将它们包含在选项对象中时,不会发送标头和正文。但是当我尝试单独发送正文时,我可以在请求有效负载中看到它。

【问题讨论】:

  • 看起来您忘记将 body 参数传递给 post()

标签: http typescript angular ionic2


【解决方案1】:

首先,检查此问题是否与 CORS 有关。

另外,试试下面的代码:

let headers = new Headers();
headers.append('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
this.http.post(`${this.link}`,'sRequest=' + sRequest1,{ headers: headers });

【讨论】:

  • 问题是 CORS 问题。现在解决了。谢谢。
【解决方案2】:

这应该适合你,因为http.post 的第二个参数是正文:

headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'Bearer ' + "tokenContent");
let options = new RequestOptions({ headers: headers });

this.http.post('http://myserver/myapi', body, options)
    .map(...

【讨论】:

【解决方案3】:

如果您从浏览器进行测试,则无法正常工作。请查看与 CORS 请求相关的文档。

http://blog.ionic.io/handling-cors-issues-in-ionic/

【讨论】:

  • 我已经在后端处理了 CORS 问题。我的问题是没有发送标题。我正在调用需要授权令牌的经过身份验证的路由,但由于它没有被发送,我无法完成交易..
  • 我遇到了类似的问题。这绝对是一个 CORS 问题。如果您在标头中注释授权附加,您将收到 401 异常。请尝试从模拟器运行代码(例如 genymotion)
猜你喜欢
  • 2016-12-11
  • 2016-10-16
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2018-08-14
  • 2015-12-30
  • 1970-01-01
  • 2021-12-29
相关资源
最近更新 更多