繁体   English   中英

无法在Ionic 3 / Angular 5中发送HTTP POST请求

[英]Can't send an HTTP POST request in Ionic 3 / Angular 5

我正在尝试将Ionic 3(Angular 5)应用中的发布请求发送到我的REST api,但是我正在获取HTTP 404(未找到)HTTP 400(错误请求)

当我使用Postman发送发帖请求时,它是成功的。 而且,我在Ionic 3应用程序中的GET请求成功运行。 您可以在下面看到成功请求,它没有授权

POST请求标头

POST请求正文

这是我的请求方法:

sendConfirmationCode() {
    let mybody = new FormData();
    mybody.append('msisdn', '1234567');

    let myheaders = new HttpHeaders({
      'Content-Type': 'application/json'
    });

    this.http.post('http://mydomain/methodname', mybody, {headers: myheaders})
    .subscribe(data => {
      console.log(JSON.stringify(data));
    }, error => {
      console.log(JSON.stringify(error));
    })
  }

使用标头,我得到HTTP 404(未找到),但是没有 HTTP 400(错误请求)。 因此,我尝试使用和不使用标头的不同主体对象。 这是我的用法,而不是FormData主体对象:

let mybody= new HttpParams();
mybody.append('msisdn', '1234567');
-----
let mybody= new URLSearchParams()
mybody.append('msisdn', '1234567');
-----
//SubscriberDataInput is my class for to use as input body model of api's method
let mybody = new SubscriberDataInput();
mybody.msisdn = '1234567';
-----
let mybody = JSON.stringify({ "msisdn": "1234567" });

并尝试了以下情况以发送标头而不是上面的标头:

let Options = {
  headers: new HttpHeaders({
    'Content-Type': 'application/json'
  })
};
-----
let headers = { 'Content-Type': 'application/json' }

他们都不成功。 你能告诉正确的方法吗?

我找到了解决方案。 问题是我的RESTful API阻止了ajax发布请求。 这是Asp.Net WebApi 2中与Cors相关的解决方案:

将常量添加到Startup.cs的 Startup类中:

private const string DefaultCorsPolicyName = "localhost";

将Cors添加到Startup类的ConfigureServices方法中:

    services.AddCors(options =>
    {
        options.AddPolicy(DefaultCorsPolicyName, builder =>
        {        
              builder
              .AllowAnyOrigin() 
              .AllowAnyHeader()
              .AllowAnyMethod();
        });
    });

Startup类的Configure方法中启用Cors:

app.UseCors(DefaultCorsPolicyName); //Enable CORS!

删除web.config中的第一个自定义标头:

<add name="Access-Control-Allow-Origin" value="*"/> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM