Application fails to load when using chrome or firefox browser. But works fine when accessing it through Internet Explorer.

Application fails to load when using chrome or firefox browser. But works fine when accessing it through Internet Explorer.

book

Article ID: CTX212829

calendar_today

Updated On:

Description

When trying to access the API the webpage fails on reload.Works fine on IE but fails from Chrome and Firefox.

When reloaded in Chrome or Firefox we get error "ERR_INVALID_HANDLE".

Resolution

We need to take nstrace on netscaler and analyze it further.
*******************************************************
From nstrace files that were taken from chrome and IE. The reason it is failing in Chrome is as below:

 
Below is the GET request sent by Netscaler to the backend server (you can filter with backend server IP and SNIP IP to track the backend communication in wireshark):
====
 
GET /map/api/Geometry/Names/?wkids%5B%5D=3006&wkids%5B%5D=3021&wkids%5B%5D=4326&wkids%5B%5D=30020 HTTP/1.1
Host: x.x.x.x.x.x.xx.x
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Negotiate TlRMTVNTUAADAAAAGAAYAIwAAABwAXABpAAAAAAAAABYAAAAJAAkAFgAAAAQABAAfAAAABAAEAAUAgAAFYKI4gYBsR0AAAAPH1TL4IT3jyvYr2ULjowa2GEAZABtAC0AZQB4AHQALQBnAHIAZQByAGUAZwAwADAAMAAxAEoATwBOAEwAMAAwADAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkcyiTrAX5PcBGyS+8ne+PAQEAAAAAAADBUZhCyJ/RAU8e2/6Ymq+SAAAAAAIAEgBKAE8ATgBLAE8AUABJAE4ARwABABYASgBLAFAALQBTAFIAVgAwADEANwA3AAQAGABqAG8AbgBrAG8AcABpAG4AZwAuAHMAZQADADAASgBLAFAALQBTAFIAVgAwADEANwA3AC4AagBvAG4AawBvAHAAaQBuAGcALgBzAGUABQAYAGoAbwBuAGsAbwBwAGkAbgBnAC4AcwBlAAcACADBUZhCyJ/RAQYABAACAAAACAAwADAAAAAAAAAAAQAAAAAgAAAs2fOjwcDrTyvRaYVV++h10YLTRgZdunW1KWgfUs02uwoAEAAAAAAAAAAAAAAAAAAAAAAACQA8AEgAVABUAFAALwBnAGUAbwBzAGUAYwBtAGEAdwBlAGIAYgAuAGoAbwBuAGsAbwBwAGkAbgBnAC4AcwBlAAAAAAAAAAAAAAAAAHIalCdmGCtlgB+RMPTwDcc=
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,sv;q=0.6
Cookie: NSC_WTSW-HfpTfdnb=ffffffff56b44b8345525d5f4f58455e445a4a423660
If-None-Match: "2015-09-28T11:22:03.1970000Z&en&JONKOPING\adm-ext-grereg0001"
 
Below we see the backend server is replying with 304 Not Modified reply but with a Body Message as “null” which is causing the issue:
===
 
HTTP/1.1 304 Not Modified
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-CorrelationId: e81fc69e-d50f-4815-a65b-5a17fa9de676
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Tue, 26 Apr 2016 14:31:02 GMT
 
null
 
According to HTTP RFC(7232) a 304 Response should not contain a message body, but in this case we have a message body in a 304 Response which is flagged as invalid response by Netscaler triggering the reset (9206- which means "HTTP tracking failed due to invalid HTTP request/response header"as shown below
 
 
User-added image
 
Snippet From RFC:
 

4.1.  304 Not Modified


 

 
   The 304 (Not Modified) status code indicates that a conditional GET
   or HEAD request has been received and would have resulted in a 200
   (OK) response if it were not for the fact that the condition
   evaluated to false.  In other words, there is no need for the server
 
   A 304 response cannot contain a message-body; it is always terminated
   by the first empty line after the header fields.
 
 
So there can be 2 suggestion customer can go for:
 
  1. Check why  backend server is sending “null” in the 304 Not Modified response and make the server not to send anything in body of 304 response.
  2. Create following rewrite rule on Netscaler so that we delete the “If-None-Match” header coming from the client and then sending to backend server. So that backend server does not reply with 304 response.

add rewrite action delete-if-none-match delete_http_header If-None-Match
add rewrite policy rewrite-pol-header "HTTP.REQ.HOSTNAME.EQ(\"geosecmawebb.jonkoping.se\")" delete-if-none-match

Problem Cause

Backend server is replying with 304 Not Modified reply but with a Body Message as “null” which is against the RFC

Issue/Introduction

This articles talks about the issue where application load balanced on Netscaler fails to load API's when accessing it through Chrome or Firefox. But works when using Internet Explorer.