我可以看到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. WCF:通過HTTP調用傳遞Kerboros令牌而不是HTTPS
- 2. 如何通過RestFemplate傳遞CSRF令牌
- 3. HTTP標頭中的令牌?
- 4. 已通過HTTP發佈令牌驗證
- 5. 如何通過WCF路由服務傳遞STS令牌?
- 6. 如何通過javascript與IdentityServer3傳遞我的訪問令牌?
- 7. 如何通過webAPI傳遞\ user azure continue令牌
- 8. 在ASP.NET MVC中通過令牌傳遞進行身份驗證
- 9. Nginx的傳遞HTTP頭通過error_page重定向
- 10. 正在檢索HTTP標頭令牌
- 11. 通過HTTP響應傳遞UN和PW
- 12. Xamarin iOS:通過http傳遞憑證
- 13. 如何通過要求傳遞$ http,$ scope?
- 14. 通過原始HTTP傳遞POST數據
- 15. 沒有通過RestTemplate.getForObject傳遞標頭
- 16. 未通過UnityWebRequest傳遞授權標頭
- 17. vue-resource沒有在請求標頭中傳遞令牌
- 18. 如何傳遞授權令牌頭像目標c?
- 19. BWToolkit令牌頭?
- 20. 是否可以通過SignalR傳遞函數?
- 21. 通過命令行傳遞參數php
- 22. 通過UserControl傳遞WPF按鈕命令
- 23. 通過命令行傳遞int int 3
- 24. C#通過命令行傳遞文件
- 25. 通過JWT令牌授權
- 26. 問題通過HTTP頭
- 27. 通過http上傳
- 28. 通過SignalR
- 29. HTTP令牌認證
- 30. 通過http請求發送設備令牌
謝謝!是的,它似乎是目前唯一的方式來傳遞額外的參數。 – 2013-03-21 10:00:43
SignalR 1.1.0beta的最新版本支持設置標題。你可以從NuGet獲得最新的軟件包。 – 2013-04-12 00:11:37
我似乎無法找到任何有關如何真正設置標題的文檔。你能指出我的方向嗎? – 2013-05-27 13:14:58