0
votes

I have a problem I can't get my head around. On some pages of our website we use SignalR. Recently some clients, notably our clients that use our website from behind a corporate proxy/firewall, have issues with the SignalR pages. They cannot load the /signalr/hubs script, a HTTP status code 406 is returned.

For example, when one of our clients requests the page from a cloud environment, this is the result: HTTP status 406

If I request the same page, it loads fine: HTTP status 200

I can't explain why it would give a 406 status code, accept: */* and accept-language should do the trick. The only notable difference I see is the disabled caching in the 2nd image.

The necessary scripts are in the proper order:

<script src='//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js' type='text/javascript'></script>
<script type="text/javascript" src="/Collectief/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script type="text/javascript" src="/Collectief/signalr/hub"></script>

Has anybody encountered this issue? Would it help to disable the auto-generated hub script and generate a physical file as described here?

1

1 Answers

0
votes

It appeared that the call to /Collectief/signalr/hub never reached our server, and was blocked by the corporate firewall of our client. They had a barracuda firewall. It seems that some firewall manufacturers (maybe more than just barracuda) have updated their filters and are now blocking SignalR functionality.

We replaced the autogenerated /signalr/hub with a physical file to circumvent the issue, but then the negotiate call would fail with another 406 status code.

We now tell our clients to change the firewall settings: whitelist our site or allow all SignalR calls.