Asp.net web api 离子2 ASP APi令牌请求
我正在尝试从我的ionic2应用程序的ASP API检索承载令牌 我已在API上启用CORS,如下所示: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
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。或者在设备/模拟器中单独尝试