mirror of
https://github.com/silkimen/cordova-plugin-advanced-http.git
synced 2026-05-31 00:00:07 +08:00
fixed #54: Requests are not responding on iOS with non-string values in header object
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
## 1.9.1
|
||||
|
||||
- Fixed #45: does not encode arrays correctly as HTTP GET parameter on Android
|
||||
- Fixed #54: requests are not responding on iOS with non-string values in header object
|
||||
|
||||
## v1.9.0
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ cordova.plugin.http.useBasicAuth('user', 'password');
|
||||
```
|
||||
|
||||
### setHeader
|
||||
Set a header for all future requests to a specified host. Takes a hostname, a header and a value.
|
||||
Set a header for all future requests to a specified host. Takes a hostname, a header and a value (must be a string value).
|
||||
|
||||
```js
|
||||
cordova.plugin.http.setHeader('Hostname', 'Header', 'Value');
|
||||
|
||||
@@ -33,6 +33,16 @@ const app = {
|
||||
};
|
||||
},
|
||||
|
||||
throw: function(error) {
|
||||
document.getElementById('statusInput').value = 'finished';
|
||||
app.printResult('result - throwed', error.message);
|
||||
|
||||
app.lastResult = {
|
||||
type: 'throwed',
|
||||
message: error.message
|
||||
};
|
||||
},
|
||||
|
||||
getResult: function(cb) {
|
||||
cb(app.lastResult);
|
||||
},
|
||||
@@ -46,7 +56,12 @@ const app = {
|
||||
document.getElementById('expectedTextarea').value = expectedText;
|
||||
document.getElementById('resultTextarea').value = '';
|
||||
document.getElementById('descriptionLbl').innerText = titleText;
|
||||
testDefinition.func(app.resolve, app.reject);
|
||||
|
||||
try {
|
||||
testDefinition.func(app.resolve, app.reject);
|
||||
} catch (error) {
|
||||
app.throw(error);
|
||||
}
|
||||
},
|
||||
|
||||
onBeforeTest: function(testIndex, cb) {
|
||||
|
||||
@@ -282,6 +282,26 @@ const tests = [
|
||||
.url
|
||||
.should.be.equal('http://httpbin.org/get?myArray[]=val1&myArray[]=val2&myArray[]=val3&myString=testString');
|
||||
}
|
||||
},{
|
||||
description: 'should reject non-string values in local header object #54',
|
||||
expected: 'rejected: {"status": 0, "error": "advanced-http: header values must be strings" ...',
|
||||
func: function(resolve, reject) {
|
||||
cordova.plugin.http.get('http://httpbin.org/get', {}, { myTestHeader: 1 }, resolve, reject);
|
||||
},
|
||||
validationFunc: function(driver, result) {
|
||||
result.type.should.be.equal('rejected');
|
||||
result.data.error.should.be.equal('advanced-http: header values must be strings');
|
||||
}
|
||||
},{
|
||||
description: 'should throw an error while setting non-string value as global header #54',
|
||||
expected: 'throwed: "advanced-http: header values must be strings"',
|
||||
func: function(resolve, reject) {
|
||||
cordova.plugin.http.setHeader('myTestHeader', 2);
|
||||
},
|
||||
validationFunc: function(driver, result) {
|
||||
result.type.should.be.equal('throwed');
|
||||
result.message.should.be.equal('advanced-http: header values must be strings');
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ var cookieHandler = require(pluginId + '.cookie-handler');
|
||||
var MANDATORY_SUCCESS = 'advanced-http: missing mandatory "onSuccess" callback function';
|
||||
var MANDATORY_FAIL = 'advanced-http: missing mandatory "onFail" callback function';
|
||||
var ADDING_COOKIES_NOT_SUPPORTED = 'advanced-http: "setHeader" does not support adding cookies, please use "setCookie" function instead';
|
||||
var HEADER_VALUE_MUST_BE_STRING = 'advanced-http: header values must be strings';
|
||||
|
||||
// Thanks Mozilla: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_.22Unicode_Problem.22
|
||||
function b64EncodeUnicode(str) {
|
||||
@@ -65,6 +66,23 @@ function mergeHeaders(globalHeaders, localHeaders) {
|
||||
return localHeaders;
|
||||
}
|
||||
|
||||
function checkHeaders(headers, onFail) {
|
||||
var keys = Object.keys(headers);
|
||||
var key;
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
key = keys[i];
|
||||
|
||||
if (typeof headers[key] !== 'string') {
|
||||
return onFail({
|
||||
status: 0,
|
||||
error: HEADER_VALUE_MUST_BE_STRING,
|
||||
headers: {}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function checkSerializer(serializer) {
|
||||
serializer = serializer || '';
|
||||
serializer = serializer.trim().toLowerCase();
|
||||
@@ -173,6 +191,10 @@ var http = {
|
||||
throw new Error(ADDING_COOKIES_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
if (typeof value !== 'string') {
|
||||
throw new Error(HEADER_VALUE_MUST_BE_STRING);
|
||||
}
|
||||
|
||||
this.headers[host] = this.headers[host] || {};
|
||||
this.headers[host][header] = value;
|
||||
},
|
||||
@@ -212,6 +234,8 @@ var http = {
|
||||
data = data || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -223,6 +247,8 @@ var http = {
|
||||
params = params || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -234,6 +260,8 @@ var http = {
|
||||
data = data || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -246,6 +274,8 @@ var http = {
|
||||
data = data || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -258,6 +288,8 @@ var http = {
|
||||
params = params || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -269,6 +301,8 @@ var http = {
|
||||
params = params || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -280,6 +314,8 @@ var http = {
|
||||
params = params || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, success);
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
@@ -291,6 +327,8 @@ var http = {
|
||||
params = params || {};
|
||||
headers = getMergedHeaders(url, headers, this.headers);
|
||||
|
||||
checkHeaders(headers, failure);
|
||||
|
||||
var onSuccess = injectCookieHandler(url, injectFileEntryHandler(success));
|
||||
var onFail = injectCookieHandler(url, failure);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user