Asp.net web api 离子2 ASP APi令牌请求

Asp.net web api 离子2 ASP APi令牌请求,asp.net-web-api,ionic2,cors,Asp.net Web Api,Ionic2,Cors,我正在尝试从我的ionic2应用程序的ASP API检索承载令牌 我已在API上启用CORS,如下所示: var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors); let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOpti

我正在尝试从我的ionic2应用程序的ASP API检索承载令牌

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

    var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
  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)
这使我能够从我的ionic 2应用程序向API发出POST请求,以便注册用户。这真是太棒了。 我为此使用的请求如下所示:

    var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
  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的请求都可以正常工作


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

var cors=new EnableCorsAttribute(“*”、“*”、“*”)

看起来您正在将访问控制允许原点设置为
*

检查

认证请求和通配符

在响应认证请求时,服务器必须指定 取而代之的是Access Control Allow origin标头值中的origin 无法指定“*”通配符

如果使用凭据,则必须设置特定的url。 或者,如果您只打算使用离子2,您可以通过以下方式避免cors问题

根据报告:

代理设置包含两个内容:在本地Ionic服务器上访问代理的路径,以及最终希望通过API调用访问的代理URL

默认情况下,爱奥尼亚服务命令将在
localhost:8100
上启动服务器。 设置代理将命中您的
http://localhost:34417/api


您在请求中的路径将指向
localhost:8100/api
,而不是您的实际服务器。

是否将allow access origin设置为*?@suraj如果您引用的是api,则是的,EnableCorsaAttribute的第一个星号会执行此操作。我只打算让我的ionic 2应用程序使用此api,然而,我试图在应用程序上设置代理,但担心我做得不对,到底需要在“路径”和“代理URL”中添加什么?大多数示例对于提出问题的人来说都非常具体,没有提及这两个示例的确切含义,感谢您澄清这一点,但是从ASP api检索令牌的调用不属于Url/api/token。Url/api/etc/etc的缩放按预期工作,只有对Url/token的调用才会引发错误如果将proxyUrl设置为
http://localhost:34417
?然后,您的req URL将是此的
localhost:8100/api/token
。。和
localhost:8100/api/api/。
其余部分..这不起作用,因为ionic 2应用程序托管在localhost:8100上,但是api托管在locahost:34417上,设置代理似乎会将我的所有http请求发送到不托管api的localhost:8100,因此,它只是回来告诉我的URL不存在,在这种情况下,您将不得不考虑服务器端更改正确设置CORS或更改令牌URL。或者在设备/模拟器中单独尝试