我在用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(使用前将#替换为@)