angular - Access-Control-Allow-Origin' 标头包含多个值
问题描述
运行网站时出现以下错误:
加载 http://localhost:54721/api/Auth/GetMenuItemsByRoleId/null 失败:“Access-Control-Allow-Origin”标头包含多个值“ http://localhost:4200 ,*”,但只允许一个. 因此不允许访问源“ http://localhost:4200 ”
为了解决这个问题,我在每个控制器中添加了以下代码,效果很好。
[EnableCors("http://localhost:54721/", "*", "*")]
所以代码会变成这样:
但是该修复适用于每个控制器,应该避免这种情况。
有没有更好的解决方法,我可以在一个地方做,比如 web.config?
我的startup.cs如下:
public partial class Startup
{
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public void Configuration(IAppBuilder app)
{
HttpConfiguration httpconfig = new HttpConfiguration();
WebApiConfig.Register(httpconfig);
//enable cors origin requests
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
//app.
ConfigureOAuth(app);
}
public void ConfigureOAuth(IAppBuilder app)
{
double timeout = Convert.ToDouble(ConfigurationManager.AppSettings["Timeout"].ToString());
OAuthAuthorizationServerOptions OAuthserverOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(10),
Provider = new SimpleAuthorizationServerProvider()
};
//Token generation
app.UseOAuthAuthorizationServer(OAuthserverOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
解决方案
是的,有,你应该那样使用它。
创建一个配置类,如本例所示。
无论如何,您的 cors 配置现在都不正确。您必须允许http://localhost:4200
,而不是您的 api 的 url http://localhost:54721
。
推荐阅读
- amazon-web-services - certificatemanager:changeResourceRecordSets 用户无权访问此资源
- websphere - IBM Watson 实体和文字
- spring - 将大型应用程序从 spring 3.1.0.x 升级到 Spring Boot 版本?(我们无法决定) - 我应该遵循哪些最佳实践/程序?
- sql - 用于从表中返回特定列的 sql 查询
- java - 为什么 SonarLint 允许认知复杂性的负阈值 (Eclipse)
- javascript - 使用我的笔在画布上素描的问题
- android - 如何拍摄 PreviewView 的照片?
- azure-devops-server - Azure devops 服务器挂起在电子邮件中发送工作项
- google-admin-sdk - 有没有办法使用 googleapis/google-api-python-client 库通过 externalid 搜索用户?
- excel - Power Automate:将 Excel OneDrive 表复制到另一个 Excel OneDrive 表的底部