c# - 如何使用信号器允许 cors
问题描述
使用 Signalr 开发应用程序,设法通过连接到 API 来解决 cors 错误,但是当尝试连接到集线器时,它显示下面的错误,即使使用不同的端口在我的本地计算机上调试也不会发生。
访问从源“http://iisServer”获取“http://iisServer:10079/fareg/signalr/negotiate?negotiateVersion=1”已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
这是我在应用程序上的配置
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddSignalR();//.AddMessagePackProtocol();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
//add Windows authentication for http options request
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
services.AddDbContext<FAContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("FADB")));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(options =>
{
//options.WithOrigins("http://schi-iis1zsus", "http://localhost:4200");
options.AllowAnyOrigin();
options.AllowAnyMethod();
options.AllowAnyHeader();
options.AllowCredentials();
});
app.UseSignalR(routes =>
{
routes.MapHub<Hubs.HubFA>("/signalr");
});
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
请帮忙,我到处找,但还没有解决这个问题。
解决方案
您要么需要明确指定来源,要么在客户端上删除AllowCredentials()
并设置withCredentials
为 false https://docs.microsoft.com/aspnet/core/signalr/configuration?view=aspnetcore-5.0&tabs=javascript#configure-additional-options -1
推荐阅读
- javascript - react vs vanilla javascript中setInterval的不同行为
- ethereum - 不允许从“string storage ref”到“contract vault”的显式类型转换
- r - 两个不重复的随机数
- python - ffmpeg 恢复为默认字幕字体
- ansible - 将公钥添加到两个遥控器之间的授权密钥的简单方法?
- flutter - 空安全迁移:如何使用 intl 包迁移应用程序?
- python - 将列表元素添加到 dict 值
- python - 如果我将包含主机和关键参数的信息的 python 代码推送到 github 上,是否会使我受到恶意攻击?
- kivy - WSL 上的 Buildozer 无法识别手机
- spring - 如何通过我们自己的具有承担角色的凭证提供者实现来覆盖 DefaultAWSCredentialsProviderChain