Jak korzystać z połączeń między domenami (CORS-Access Control Allow Origin) z SignalR
Za pomocą trwałych połączeń i ASP.NET Klient JavaScript, próbuję połączyć się z sub-domeną inną niż ta, z której serwowana była strona.
ASP.Net strona z serwera sub1.mydomain.com
chce połączyć się z SignalR pod adresem sub2.mydomain.com
. Ten sam kod działa dobrze podczas łączenia w ramach tej samej sub-domeny.
Znalazłem kolejny post, w którym Połączenia między domenami były włączone przez:
jQuery.support.cors = true;
Ale to nie zadziałało.
Jak mogę połączyć się z SignalR w sekundę sub-domena z trwałym połączeniem i klientem JavaScript?
6 answers
Musisz wykonać jedną z następujących czynności, aby to zadziałało:
- Skonfiguruj
$.connection.hub.url = 'http://subdomain.domain.com/signalr';
, wskazując na Twoją subdomenę. -
Włącz cross domain na serwerze:
RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 22:41:15
Jeśli przełączysz się z 0.5.1 na 0.5.2, możesz mieć:
$.connection.hub.start({ transport: 'longPolling', xdomain: true }, function () {...
Które można zmienić na:
$.connection.hub.start({ jsonp: true }, function () {...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-05 19:30:02
W obecnej wersji SignalR, używając teraz oddzielnego pakietu CORS, API dla tego zmieniło się na:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-05 00:43:20
W Signalr2, można użyć pre-release Microsoft.Owin.Cors , Obecnie 3.0.0-RC1 od momentu napisania tego: Microsoft.Owin.Cors .
Więcej informacji można znaleźć tutaj:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-12 00:17:45
var connection = $.connection('http://somecrossdomainurl/echo')
connection.start({ transport: 'longPolling', xdomain: true });
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-22 11:02:35
To, co naprawdę rozwiązało mój problem, to:
1-dodaj to do global.asax: {]}
RouteTable.Routes.MapHubs(new HubConfiguration() {
EnableCrossDomain = true
});
2-Skonfiguruj sieć.konfiguracja mojego projektu internetowego, aby włączyć cross-domenę:
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> </customHeaders> </httpProtocol> </system.webServer>
3 - Następnie zmieniam implementację w moim html, zmieniając $.connection() to as follow:
var connection = $.hubConnection('http://localhost.my:8081/signalr'); var chatHubProxy = connection.createHubProxy('chatHub');
Wersje, których używam:
SignalR-1.1.0
-
Jquery.signalR-1.1.3.js
-
Dot.net 4.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-28 12:40:13