我可以看到HubConnection中有一个选项可以通过来自客户端的url请求传递参数。有没有什么办法通过JS或.NET客户端的HTTP头传递特定的令牌?通过http头传递令牌SignalR
回答
有没有简单的方法来设置使用JS或.NET客户端SignalR请求的HTTP头,但你可以到将每个SignalR请求的一部分发送的查询字符串添加参数:
JS客户
$.connection.hub.qs = { "token" : tokenValue };
$.connection.hub.start().done(function() { /* ... */ });
.NET客户端
var connection = new HubConnection("http://foo/",
new Dictionary<string, string>
{
{ "token", tokenValue }
});
内部集线器,则可以通过上下文访问的团体名称:
Context.QueryString["token"]
进行持续的连接时,也可以添加到查询字符串。
编辑:现在可以在一些评论者指出的.NET SignalR客户端上设置标题。在.NET客户端
设置页眉
var connection = new HubConnection("http://foo/");
connection.Headers.Add("token", tokenValue);
您可以使用.NET客户端(如@abnanda提到)或者连接或HubConnection添加页眉:
var connection = new Connection("http://signalr/");
connection.Headers.Add("custom-header", "value");
在服务器端,您可以从例如IRequest中检索标题值OnConnected:
var header = request.Headers["custom-header"];
不过,我还没有找到一种方法,与JS客户做到这一点(存在$连接对象没有页眉或addHeaders)。
我已经张贴的问题上,在:http://forums.asp.net/t/1910020.aspx/1?Add+custom+HTTP+header+on+client+side+connect+call+SignalR+1+1+1+
编辑:头,因为WebSocket的客户端(浏览器)不暴露不支持它(所以它不可能跨越的传输来实现它) 。请参阅上文中的David Fowlers回复。
我通过将我的信息添加到querystring
解决此问题,IConnected.Connect()
方法中可用。
在.NET客户端,您通过querystring into your HubConnection:
var connection = new HubConnection("http://localhost:8080/", "myInfo=12345");
在JS客户端设置了QS属性开始连接之前:
$.connection.hub.qs = "myInfo=12345";
然后,您可以访问服务器上的信息在Connect()方法中:
var myInfo = Context.QueryString["myInfo"];
Groups.Add(Context.ConnectionId, myInfo);
聪明的把戏。你现在救了我的命。谢谢 – Jacob 2017-08-18 09:24:52
- 1. 通过http头传递真实性令牌
- 2. WCF:通过HTTP调用传递Kerboros令牌而不是HTTPS
- 3. 如何通过RestFemplate传递CSRF令牌
- 4. AngularJS服务InterDependency将验证令牌传递给Http标头
- 5. HTTP标头中的令牌?
- 6. Android通过Intent播放http视频 - 传递http标头
- 7. 已通过HTTP发布令牌验证
- 8. 通过令牌
- 9. Nginx的传递HTTP头通过error_page重定向
- 10. 通过liferay portlet页面传递http标头
- 11. 如何通过javascript与IdentityServer3传递我的访问令牌?
- 12. 如何通过webAPI传递\ user azure continue令牌
- 13. 在ASP.NET MVC中通过令牌传递进行身份验证
- 14. 如何通过WCF路由服务传递STS令牌?
- 15. 如何通过可靠的时间戳传递API令牌
- 16. 通过单元格上的jqgrid传递csrf令牌
- 17. 传递一个CSRF令牌
- 18. 的Rails +设计的HTTP头令牌
- 19. 正在检索HTTP标头令牌
- 20. 春季OAuth2访问令牌在HTTP头
- 21. 如何通过要求传递$ http,$ scope?
- 22. 通过HTTP响应传递UN和PW
- 23. 通过HTTP GET传递多个参数
- 24. 通过http post参数传递参数
- 25. 通过HTTP适配器传递参数?
- 26. Xamarin iOS:通过http传递凭证
- 27. 通过原始HTTP传递POST数据
- 28. 没有通过RestTemplate.getForObject传递标头
- 29. 通过UIPanGestureRecognizer传递水龙头
- 30. 未通过UnityWebRequest传递授权标头
谢谢!是的,它似乎是目前唯一的方式来传递额外的参数。 – 2013-03-21 10:00:43
SignalR 1.1.0beta的最新版本支持设置标题。你可以从NuGet获得最新的软件包。 – 2013-04-12 00:11:37
我似乎无法找到任何有关如何真正设置标题的文档。你能指出我的方向吗? – 2013-05-27 13:14:58