Bug #4174

No response body from HTTP request when http.status >= 400

Added by Debbie Lockett 11 months ago. Updated about 2 months ago.

Start date:
Due date:
% Done:


Applies to JS Branch:
1.0, Trunk
Fix Committed on JS Branch:
1.0, Trunk
Fixed in JS Release:
SEF Generated with:
Contact person:
Additional contact persons:


Issue raised by user on Saxon-JS forum at

"When I use ixsl:schedule-action to do an http-request, I'm not getting a body in the response map for errors (though the bodies do show up just fine for 2xx responses). For example, POSTing a malformed document, I'm returned:

map{"headers":map{"connection":"close", "content-type":"application/xml;charset=UTF-8", "transfer-encoding":"Identity", "date":"Wed, 20 Mar 2019 00:16:19 GMT"}, "status":400, "message":"", "type":"load"}"' "

In the Saxon-JS code (BrowserPlatform makeHttpRequest) it appears that we only add response.body if !request["status-only"] && http.status < 400. I'm not sure where that restriction came from; I probably wrongly assumed that error responses never have bodies...


#1 Updated by Debbie Lockett 11 months ago

  • Description updated (diff)

#2 Updated by Debbie Lockett about 2 months ago

Tests added under tests/saxon-js/http: see httpMethodTests and httpStatusTest.

httpStatusTest allows the testing of different status codes for a HTTP response (set by supplying a code via a textarea input box) - to check the returned response header and body.

httpMethodTests contains various tests of GET and HEAD requests, including use of status-only with HEAD requests (as David added on original forum post, it doesn't really make sense that status-only is required for a HEAD request).

#3 Updated by Debbie Lockett about 2 months ago

  • Status changed from New to Resolved
  • Fix Committed on JS Branch 1.0, Trunk added

Changes committed in BrowserPlatform.js for 1.x and 2 branches.

Includes fixes for all issues raised in original forum post:

  1. Include response body from HTTP request when http.status >= 400
  2. Remove problematic unused code on line 373 var part2 = typeParts[1].trim();
  3. status-only should not be required for HEAD requests

Plus a couple of other issues encountered in testing (e.g. media-type should be ignored for HEAD and GET requests).

Please register to edit this issue

Also available in: Atom PDF Tracking page