我得到Cors策略错误时,试图做POST请求到Web api从我的WASM blazor应用程序。
CORS策略阻止从http://localhost:8080/DashboardService/TestConnectionhttps://localhost:8081获取数据:请求的资源上不存在访问控制允许来源标头。如果不透明的响应满足您的需求,请将请求的模式设置为no-cors,以在禁用CORS的情况下获取资源。
我在调试模式下没有问题,只有IIS发布
Startup.cs(WEB API)
public class Startup
{
#region Fields/Attributes
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private readonly IConfiguration configuration;
#endregion Fields/Attributes
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="Startup"/> class.
/// </summary>
/// <param name="configuration">The configuration identifier</param>
public Startup(IConfiguration configuration)
{
logger.Trace($"{GetType().FullName} constructed");
this.configuration = configuration;
}
#endregion Constructors
#region Methods
/// <summary>
/// This method gets called by the runtime. Use this method to add services to the container.
/// </summary>
/// <param name="services">The service collection identifier</param>
public void ConfigureServices(IServiceCollection services)
{
// Statistics And Monitoring Service
services.AddSingleton<IDashboardService, DashboardService>();
services.AddSingleton<IManualLogsService, ManualLogsService>();
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
services.AddCors(options => options.AddPolicy("CorsPolicy2",
builder =>
{
builder.WithOrigins("https://localhost:8081").AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
}));
services.AddSignalR(options =>
{
options.EnableDetailedErrors = true;
options.MaximumReceiveMessageSize = long.MaxValue;
options.ClientTimeoutInterval = TimeSpan.FromSeconds(240);
options.KeepAliveInterval = TimeSpan.FromSeconds(120);
})
string identityServerAuthority = "https://localhost:8082";
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, opt =>
{
opt.RequireHttpsMetadata = false;
opt.Authority = identityServerAuthority;
opt.Audience = "backend";
});
logger.Trace($"Services configured");
}
/// <summary>
/// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
/// </summary>
/// <param name="app">The application builder identifier</param>
/// <param name="env">The web host environement identifier</param>
/// <param name="agentsService">The AgentsService identifier</param>
/// <param name="collectedValueConverter">The CollectedValueConverter identifier</param>
/// <param name="databaseConnectionService">The DatabaseConnectionService identifier</param>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Dependency injecting only to force instantiation of Singletons")]
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IDataBaseServiceApplicationConfig dataBaseServiceApplicationConfig, IAgentsService agentsService, IMachineStructureService machineStructureService, ICollectedValueConverter collectedValueConverter, IDatabaseConnectionService databaseConnectionService)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
//app.UseHsts();
}
//app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("CorsPolicy2");
app.UseAuthentication();
app.UseAuthorization();
app.UseStaticFiles();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<BackEndHub>("/DashboardService");
});
}
#endregion Methods
}
我在我的控制器上有[授权]属性,如果我删除它们,它会工作。。。
有人能帮我吗?提前谢谢
日亨
问题解决:我转到windows中的事件查看器,看到了真正的错误,这是一个SSL证书问题。我的后端是http,identity server不接受这种方式。我们将后端转换为https并使用开发证书。我们面临同样的问题,但这一次是个人存储的证书,不受信任。管理此操作的步骤:Windows-
谢谢大家的帮助。
我看到的第一个问题是这两行的顺序不对:
app.UseAuthorization();
app.UseAuthentication();
您应该始终在授权之前进行身份验证。
您还应该知道,在识别服务客户端定义中有一个单独的CORS设置,但是这些设置(如果我没有错的话)仅在调用识别服务器终结点时应用。
我试图生成一个简单的axios请求,如下所示(我正在使用vue.js): 但我得到以下错误: 我已经尝试过添加下面的头,但仍然不起作用 但是如果我尝试通过浏览器发出请求(简单地通过复制和粘贴url),一切都很好。 有人知道怎么帮我吗?非常感谢!
我有以下步骤在批处理工作。 当某个异常抛出时,我在parseStepSkipListener中捕捉他并登录数据库。 我期待以下行为: 作业已启动 执行前面的步骤 开始执行解析步骤 阅读项目 进程项 写 哦,异常。 捕获异常,登录数据库,转到下一个块(读取、处理、写入)。 作业已启动 执行前面的步骤 开始执行解析步骤 阅读项目 进程项 写 哦,异常。 进程项 写入项 哦,异常。 捕获异常,登录数据库
我们正在开发一个Spring Boot程序和angularjs应用程序。我们使用JWT令牌和LDAP身份验证。LDAP身份验证后,service生成jwt令牌并发送给angular,从下一次开始,angular将令牌和用户名发送回service,angular将令牌存储在会话存储中。 有人能解决这个问题吗????
我和我的朋友在我们的应用编程接口和角客户端上遇到了CORS问题。我们试图建立一个链接,我们正在使用SignalR和客户端(Angular 7)注册自己来接收来自服务器(ASP)的消息。NET核心2.2)。 在浏览器控制台中,我收到以下消息: CORS策略阻止了对来自http://localhost:4200的https://ourEndpoint/坐标中心/谈判的XMLHttpRequest的访问
我正在尝试使用Java读取excel(.xls和.xlsx)。我能正确地阅读xlsx。但当我使用以下代码读取xls文件时 我犯错了 java.lang.nosuchmethoderror:org.apache.poi.hssf.usermodel.hssfrow.getcell(ilorg/apache/poi/ss/usermodel/row$missingcellpolicy;)log/apa
问题内容: 我试图在获得图像之前先在画布上绘制图像,但是返回的数据就像是空的。 当我在控制台中检查它时,我发现字符串中有很多:() 当我尝试将画布附加到文档时,也没有绘制任何内容,并且控制台中没有引发任何错误。 这里有什么问题 ? 这是我的代码: 另外,进行快速刷新时,图像会正确绘制到画布上,但是控制台中出现错误消息,并且为空。 Firefox中的消息是: “ SecurityError:操作不安