Project

Profile

Help

Maintenance: Planio will be observing a scheduled maintenance window this Tuesday, November 5, 2024 from 03:00 UTC until 06:30 UTC to perform urgent network maintenance in our primary data center. Your Planio account will be unavailable during this maintenance window.

Bug #4191

closed

Saxon-JS error on null Content-Type

Added by David Cramer over 5 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Category:
IXSL extensions
Sprint/Milestone:
-
Start date:
2019-04-07
Due date:
% Done:

100%

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

Description

In my UI, I poll the server and refresh content on the page that's changed. I added support for the etag[1] header and ran across a Saxon-JS bug. When I sent an If-None-Match header and the resource is unchanged, the server sends back a "304 Not Modified" and no Content-Type, causing the line in Saxon-JS "var typeParts = respContentType.split(/;/);" to fail with "TypeError: null is not an object (evaluating 'respContentType.split')". I wrapped it in a try/catch as a workaround. Note I had already modified "var part2" to avoid a different error: https://saxonica.plan.io/boards/5/topics/7423

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag

dcramer@anatine ~/git-repos/spec-service (updateTitleAndAuthorAuthorUI *)
$ git diff api/app/src/main/webapp/author/resources/Saxon-JS/SaxonJS.js
diff --git a/api/app/src/main/webapp/author/resources/Saxon-JS/SaxonJS.js b/api/app/src/main/webapp/author/resources/Saxon-JS/SaxonJS.js
index f540b4b..f567d87 100644
--- a/api/app/src/main/webapp/author/resources/Saxon-JS/SaxonJS.js
+++ b/api/app/src/main/webapp/author/resources/Saxon-JS/SaxonJS.js
@@ -368,8 +368,13 @@ var BrowserPlatform = (function () {
                 if (!request["status-only"]) {
                     var respContentType = http.getResponseHeader('Content-Type');
                     // get part of string before ';'
-                    var typeParts = respContentType.split(/;/);
-                    var mediaType = typeParts[0];
+                    // DWC: Adding Try/Catch in case there's no ; in the respConentType
+                    try{
+                        var typeParts = respContentType.split(/;/);
+                        var mediaType = typeParts[0];
+                        } catch(e) {
+                            var mediaType = respContentType;
+                        }
                     var part2 = ''; //typeParts[1].trim(); // will this work if 'Content-Type' string only contains media type?
                     // part2 may be 'boundary=...' (if multipart), or encoding 'charset=...'
                     // TODO use part2

Please register to edit this issue

Also available in: Atom PDF Tracking page