支持 CORS 的服务器发送事件

2024-02-17

我在用ServiceStack 中的服务器发送事件 https://github.com/ServiceStack/ServiceStack/wiki/Server-Events我需要允许它跨来源使用。

我已经设置了ServiceStackCorsFeature在我的申请中,但这并没有得到ServerEventsFeature.

我可以手动添加Access-Control-Allow-Origin标题中的OnCreated,这允许请求event-stream,但是心跳请求失败,因为我无法为此请求设置标头。

Plugins.Add(new ServerEventsFeature {
    HeartbeatInterval = new TimeSpan(0,0,30),
    OnCreated = (subscription, request) => {
        request.Response.AddHeader("Access-Control-Allow-Origin","*");
    }
    ...
}

作为 SSE 功能在 RawHandler 上实现 https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/ServerEventsFeature.cs#L61,我不知道如何将此标头放入请求中。有没有办法可以为所有设置标题/event- url's?

谢谢。


只有/event-stream and /event-heartbeat是原始 HTTP 处理程序,其他event-*路由是通过 ServiceStack 的请求管道的普通 ServiceStack 服务。

我添加了自动应用的更改Config.GlobalResponseHeaders二者皆是/event-stream and /event-heartbeat处理程序在这次提交中 https://github.com/ServiceStack/ServiceStack/commit/7563855c64c1cfec1cdd05fd6fcfa73600ae7190。此更改现在应该自动添加启用 CorsFeature 时的 CORS 标头 https://github.com/ServiceStack/ServiceStack/blob/04e88413821c8fbe1cf57fdc4a5026069fb565b8/src/ServiceStack/CorsFeature.cs#L66.

我还添加了OnHeartbeatInit for /event-heartbeat回调来匹配/event-stream OnInit回调,因此您也可以将自定义标头添加到 Heartbeat 处理程序。

Plugins.Add(new ServerEventsFeature {
    HeartbeatInterval = new TimeSpan(0,0,30),
    OnInit = (request) => {
        request.Response.AddHeader(...);
    },
    OnHeartbeatInit = (request) => {
        request.Response.AddHeader(...);
    },
    ...
}

此更改可从v4.0.34+就是现在可在 MyGet 上找到 https://github.com/ServiceStack/ServiceStack/wiki/MyGet.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

支持 CORS 的服务器发送事件 的相关文章

  • 当我在组合框中选择一个项目时,如何防止 TextChanged 事件?

    我有一个TextChanged http msdn microsoft com en us library system windows forms control textchanged aspx我的事件ComboBox http msd
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 如何比较类和接口?

    谁能解释一下如何比较KClasses 和它们之间的接口 我知道如何检查类或接口是否相等 但我不明白如何检查 A 类是否是 B 类的超类等 interface IB interface IC IB open class A open clas
  • iPhone的加速度计可以在后台运行吗?

    我想使用iPhone的加速度计来获取加速度计值的日志文件 可能是24小时 当其他应用程序运行时 是否可以让加速度计在后台运行 如果您的应用程序因其他原因被允许在后台运行 您现在就可以执行此操作 查看核心运动 APIstartAccelero
  • 跟踪用户在网站中完成特定操作的时间

    我想跟踪用户完成特定操作所花费的时间 包括服务器响应时间和渲染时间 DOM相关更改 在网站中 我已经在 Angular 框架中尝试过了 为此 我想记录用户开始操作的时间 并且我想记下操作完成的时间 作为一名开发人员 我会知道用户何时开始活动
  • laravel 在控制器中的所有方法之间共享变量

    我正在 PHP laravel 框架中制作一个简单的网站 其中顶部导航链接是从数据库动态生成的 我正在主控制器操作中生成 pages 变量并传递到布局文件 我的代码如下 public function home pages Page all
  • 事件驱动架构和事件结构

    我是 EDA 新手 我已经阅读了很多有关其优点的内容 并且可能有兴趣在我的下一个项目中应用它 但仍然不明白一些东西 引发事件时 哪种模式最适合 将事件命名为 CustomerUpdate 并包含有关客户的所有信息 更新或未更新 将事件命名为
  • R data.table 替换另一个 data.table 中值的索引

    您好 仍在尝试找出 data table 如果我有一个包含如下所示值的 data table 那么将这些值替换为另一个 data table 中的值的最有效方法是什么 set seed 123456 a data table date id
  • 如何在 jQuery 中暂停事件?

    我有一个关于事件的问题 基本上 我想在用户单击链接离开页面时运行 jquery 方法 在这个方法中 我想在他们离开之前检查一些事情 所以我知道我可以调用 e preventDefault 但是 如果我在阻止事件后希望事件继续进行怎么办 有什
  • Delphi 中的 Windows API 参数 - 使用或不使用 @ 运算符传递 var 参数?

    我正在尝试使用一个调用的函数设置DiGetDeviceRegistryProperty http msdn microsoft com en us library ff551967 28v vs 85 29 aspx与德尔福7 该调用来自示
  • 具有多行项目的微调器与 Froyo 上的所选项目显示重叠

    我正在尝试创建在所有 Android 版本 直到 Froyo 上看起来都相同的 Spinner 为此 我正在使用无处不在的全息 https github com Prototik HoloEverywhere 一些微调器项目文本超过一行 我
  • 在 Visual Studio 2019 中,WCF 服务(启用 AJAX)不在添加 --> 新项中

    我正在尝试创建一个 Rest Web 服务 并且是 Visual Studio 2019 的新手 创建项目后 我尝试通过右键单击该项目并转到 添加 gt 新项目 来获取 WCF 服务 启用 AJAX 但是 我在任何地方都没有看到这项服务 我
  • 通过 R 中的 geom_text 将小于号“<”添加到 ggplot

    简短版本 我如何使这个人为的代码绘制出正确的希腊贝塔字符和标签字符串的其余部分 以及空格和小于字符以及格式化为键入的数字 library ggplot2 df lt data frame a 1 15 b 6 20 ggplot data
  • JavaScript 数组解构赋值和空值

    我正在使用外部服务getListOfItemsFromServiceA它接受一个id 用户 并返回与该用户关联的 5 个项目 正好 5 个 的列表 我使用数组解构赋值来设置那些工作正常的项目的值 如下所示 仅是一个示例 var item1
  • Automake 变量来整理 Makefile.am

    我有一个目录 src 包含所有源文件 bin 用来在运行 make 命令后存储所有二进制文件 该目录如下所示 BuildDirectory src bin configure Makefile am configure ac 现在在 Mak
  • 注意:未定义索引:变量

    我正在尝试构建以下表格
  • 在Java中,当文件被其他线程锁定时,有没有办法读取该文件?

    因此 我使用以下命令在文件上创建锁定 以便我可以专门对其进行编辑 File file new File filename channel new RandomAccessFile file rw getChannel lock channe
  • HTML5 视频 - 暂停加载/部分加载

    有没有办法预加载视频的一部分 而不是整个视频 我注意到有一个 暂停 事件 表明视频预计不会下载 直到有进一步指示 但我不确定如何触发此事件 我的目标是预加载视频的一部分而不占用所有用户的带宽 Thanks 您可以使用 XHR 预取任何 UR
  • Java SafeVarargs 注释,是否存在标准或最佳实践?

    我最近接触到了java SafeVarargs注解 谷歌搜索 Java 中的可变参数函数不安全的原因让我很困惑 堆中毒 擦除类型 所以我想知道一些事情 是什么使得可变参数 Java 函数在 SafeVarargs有什么意义 最好以深入示例的
  • 自定义包名称 cxf-codegen-plugin

    想象一下这个场景 我有一个名称空间为 a b c 的 wsdl 文件 它导入另一个名称空间为 m n o 的 wsdl 文件 不幸的是 它们都定义了相同的 ComplexTypes XYZ 现在 当我使用 cxf codegen plugi
  • grep IP 地址和开放端口 nmap

    我正在尝试使此脚本使用 nmap 的开放端口来 grep IP 地址 但我无法以正确的方式执行此操作 我有这样的事情 nmap 192 168 0 0 24 sU p 44555 grep oP 0 9 1 3 3 0 9 1 3 gt o
  • 支持 CORS 的服务器发送事件

    我在用ServiceStack 中的服务器发送事件 https github com ServiceStack ServiceStack wiki Server Events我需要允许它跨来源使用 我已经设置了ServiceStackCor