Ionic 2 ASP APi令牌请求

时间:2017-04-24 10:12:07

标签: asp.net-web-api ionic2 cors

我正在尝试从我的ionic2应用程序中检索来自ASP API的持有人令牌。

我在API上启用了CORS,如下所示:

    var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);

这使我能够从我的离子2应用程序到我的API形成POST请求,以便注册用户。这非常有效。 我用于此的请求如下所示:

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


  let options = new RequestOptions({
    headers: headers
  });

  let body = JSON.stringify({
    Email: credentials.email,
    Password: credentials.password,
    ConfirmPassword: credentials.confirmPassword
  });      

  return this.http.post('http://localhost:34417/api/Account/Register', body, options)

但是,当我尝试从API检索令牌时,收到以下错误:

    No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

我用来尝试检索令牌的请求如下:

    let body = "grant_type=password" + "&userName=" + credentials.email + "&password=" + credentials.password;
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });    
return this.http.post('http://localhost:34417/token', body, options)

这是唯一一个抛出此错误的请求,对我的API的所有其他请求都可以正常工作。

我错过了什么,或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

re.sub(r"(\d.*?)[a-z]+(\d.*?)", r"\1 \2", "123abc123") # python code

您似乎将var cors = new EnableCorsAttribute("*", "*", "*");设为Access-Control-Allow-Origin

检查MDN CORS Requests with credentials

  

Credentialed请求和通配符

     

在响应凭证请求时,服务器必须指定   取而代之的是起源于Access-Control-Allow-Origin标头的值   指定" *"通配符。

如果您使用凭据,则必须设置特定网址。 或者,如果您只打算仅使用离子2,则可以通过setting a proxy避免出现问题。

根据official blog

  

代理设置包含两件事:用于在本地Ionic服务器上访问它们的路径,以及您最终希望通过API调用访问的proxyUrl。

*

默认情况下,Ionic serve命令将在{ "name": "ionic-2-app", "app_id": "my_id", "proxies": [ { "path": "/api", "proxyUrl": "http://localhost:34417/api" } ] } 上启动服务器。 设置代理将点击您的localhost:8100

请求中的路径将是http://localhost:34417/api而不是您的实际服务器。