问题

将 SignalR 集成到 ASP.NET Core MVC 程序的时候,按照官方 DEMO 配置完成,但使用 DEMO 页面建立连接一直提示如下信息。

Access to XMLHttpRequest at 'http://localhost:8090/signalr-myChatHub/negotiate' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

原始代码:

services.AddCors(op =>
{
op.AddPolicy(MonitorStartupConsts.DefaultCorsPolicyName, set =>
{
set.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});

原因

出现该问题的原因是由于 CORS 策略设置不正确造成的,原始设置我是允许所有 Origin 来源。但是由于 dotnetCore 2.2 的限制,无法使用 AllowAnyOrigin() + AllowCredentials() 的组合,只能显式指定 Origin 来源,或者通过下述方式来间接实现。

解决

更改 Cors 相关配置,在 CorsPolicyBuilder 提供了一个方法用于配置验证逻辑。该方法名字叫做 SetIsOriginAllowed(Func<string, bool> isOriginAllowed),这个委托会验证传入的 Origin 源,如果验证通过则返回 true

在这里我们只需要将其设置为一直返回 true 即可。

最终代码如下:

services.AddCors(op =>
{
op.AddPolicy(MonitorStartupConsts.DefaultCorsPolicyName, set =>
{
set.SetIsOriginAllowed(origin => true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});

最新文章

  1. scala shuffle
  2. vs2015里给c#添加轮廓折叠功能
  3. 菜鸟疑问之新建网站与新建web应用程序区别
  4. Nginx日志常用分析命令汇总 (转)
  5. 使用commons-logging和log4j记录日志
  6. .net 常用Response.ContentType
  7. UVa 11988 破损的键盘(链表)
  8. HDU (线段树 单点更新) I Hate It
  9. div 布局2
  10. 常用颜色大全---RGB值及中英文名称
  11. how to use http.Agent in node.js
  12. openstack 使用cloud init 和 console-log, nbd或者libguestfs 获取VM中的硬件信息。
  13. angular.js的ui-router总结
  14. 使用SpringSocial开发微信登录
  15. 转载 Spring、Spring MVC、MyBatis整合文件配置详解
  16. 【Linux】VMware虚拟机中如何配置静态IP
  17. vue-demo
  18. vanilla
  19. 转 configure: error: Cannot find ldap libraries in /usr/lib 解决办法
  20. Android.mk文件简单分析

热门文章

  1. Log4j2中的同步日志与异步日志
  2. Spring_JDBC
  3. redis结合自定义注解实现基于方法的注解缓存,及托底缓存的实现
  4. b2OJ_1565_[NOI2009]植物大战僵尸_拓扑排序+最大权闭合子图
  5. 后端传Long类型至前端js会出现精度丢失问题
  6. Git----GitHub上传本地文件到git
  7. 计算机17-3,4作业F
  8. 十分钟学会Java8的lambda表达式和Stream API
  9. 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下
  10. ASP.NET Core开发者成长路线图