我正在使用Server Sent Events in ServiceStack,我需要允许它在原点上使用。
我已在我的应用程序中设置了ServiceStack CorsFeature
,但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功能is implemented on a RawHandler,我无法看到如何将此标头添加到请求中。有没有办法为所有/event-
网址设置标题?
感谢。
答案 0 :(得分:1)
只有/event-stream
和/event-heartbeat
是原始HTTP处理程序,其他event-*
路由是通过ServiceStack的请求管道的正常ServiceStack服务。
我已添加更改以自动将Config.GlobalResponseHeaders
应用于/event-stream
和/event-heartbeat
处理程序in this commit。此更改现在应自动添加CORS Headers when CorsFeature is enabled。
我还为OnHeartbeatInit
回调添加了/event-heartbeat
以匹配/event-stream
OnInit
回调,因此您也可以向Heartbeat处理程序添加自定义标头。< / p>
Plugins.Add(new ServerEventsFeature {
HeartbeatInterval = new TimeSpan(0,0,30),
OnInit = (request) => {
request.Response.AddHeader(...);
},
OnHeartbeatInit = (request) => {
request.Response.AddHeader(...);
},
...
}
此修改可从 v4.0.34 + 获得,现在为available on MyGet。