From 9f56af9c15e1096033c91c2619f7f7f0115d0032 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Tue, 3 May 2011 09:40:39 +0200 Subject: XHR should add Content-type header only for POST Sending Content-type header causes JSTD (Jetty) proxy to change GET methods into POST. --- src/Browser.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/Browser.js') diff --git a/src/Browser.js b/src/Browser.js index 55439762..b10c43cf 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -7,10 +7,14 @@ var XHR = window.XMLHttpRequest || function () { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e3) {} throw new Error("This browser does not support XMLHttpRequest."); }; + +// default xhr headers var XHR_HEADERS = { - "Content-Type": "application/x-www-form-urlencoded", - "Accept": "application/json, text/plain, */*", - "X-Requested-With": "XMLHttpRequest" + DEFAULT: { + "Accept": "application/json, text/plain, */*", + "X-Requested-With": "XMLHttpRequest" + }, + POST: {'Content-Type': 'application/x-www-form-urlencoded'} }; /** @@ -103,8 +107,9 @@ function Browser(window, document, body, XHR, $log) { } else { var xhr = new XHR(); xhr.open(method, url, true); - forEach(extend(XHR_HEADERS, headers || {}), function(value, key){ - if (value) xhr.setRequestHeader(key, value); + forEach(extend({}, XHR_HEADERS.DEFAULT, XHR_HEADERS[uppercase(method)] || {}, headers || {}), + function(value, key) { + if (value) xhr.setRequestHeader(key, value); }); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { -- cgit v1.2.3