Skip to content

Commit 7d9c882

Browse files
committed
Merge remote-tracking branch 'keverw/master'
2 parents 7e230d1 + fc5d994 commit 7d9c882

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# node-XMLHttpRequest #
22

3+
this is a fork with support for disabling header checking.
4+
35
node-XMLHttpRequest is a wrapper for the built-in http client to emulate the
46
browser XMLHttpRequest object.
57

lib/XMLHttpRequest.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ exports.XMLHttpRequest = function() {
3030

3131
// Request settings
3232
var settings = {};
33+
34+
//headerscheck
35+
var disableHeaderChecking = false;
3336

3437
// Set some default headers
3538
var defaultHeaders = {
@@ -117,7 +120,14 @@ exports.XMLHttpRequest = function() {
117120
* @return boolean False if not allowed, otherwise true
118121
*/
119122
var isAllowedHttpHeader = function(header) {
120-
return (header && forbiddenRequestHeaders.indexOf(header.toLowerCase()) === -1);
123+
if (disableHeaderChecking)
124+
{
125+
return true
126+
}
127+
else
128+
{
129+
return (header && forbiddenRequestHeaders.indexOf(header.toLowerCase()) === -1);
130+
}
121131
};
122132

123133
/**
@@ -163,6 +173,19 @@ exports.XMLHttpRequest = function() {
163173

164174
setState(this.OPENED);
165175
};
176+
177+
178+
/**
179+
* Disables or enables isAllowedHttpHeader() check the request. Enabled by default.
180+
*
181+
* @param State true or false
182+
*
183+
* This is a more advance feature. This does not conform to the W3C spec
184+
*
185+
*/
186+
this.disableHeaderCheck = function(state) {
187+
disableHeaderChecking = state;
188+
}
166189

167190
/**
168191
* Sets a header for the request.

tests/header_set.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var sys = require('util');
2+
var XMLHttpRequest = require("./lib/xmlhttprequest").XMLHttpRequest;
3+
4+
var xhr = new XMLHttpRequest();
5+
6+
xhr.onreadystatechange = function() {
7+
sys.puts("State: " + this.readyState);
8+
9+
if (this.readyState == 4) {
10+
sys.puts("Complete.\nBody length: " + this.responseText.length);
11+
sys.puts("Body:\n" + this.responseText);
12+
}
13+
};
14+
15+
xhr.open("GET", "http://localhost/ua_test.php");
16+
17+
xhr.disableHeaderCheck(true)//Disable check
18+
19+
xhr.setRequestHeader('User-Agent', 'Search bot'); //set forbidden header
20+
xhr.send();

0 commit comments

Comments
 (0)