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?

Author: Scott Weldon, 2012-04-03

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
    });
    
 34
Author: Piotr Szmyd,
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 () {...
 7
Author: ElHaix,
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);
    });
}

Zobacz ASP.NET SignalR Hubs API Guide-Klient JavaScript .

 6
Author: Ian Mercer,
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:

 3
Author: anAgent,
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 });

Https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client

 1
Author: jlp,
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

 1
Author: Claudio Santos,
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