我正在尝试从我的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的所有其他请求都可以正常工作。
我错过了什么,或者我做错了什么?
答案 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避免出现问题。
代理设置包含两件事:用于在本地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
而不是您的实际服务器。