前端代码
This commit is contained in:
134
node_modules/browser-sync/dist/server/proxy-utils.js
generated
vendored
Normal file
134
node_modules/browser-sync/dist/server/proxy-utils.js
generated
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
var url = require("url");
|
||||
module.exports.rewriteLinks = function (userServer) {
|
||||
var host = userServer.hostname;
|
||||
var string = host;
|
||||
var port = userServer.port;
|
||||
if (host && port) {
|
||||
if (parseInt(port, 10) !== 80) {
|
||||
string = host + ":" + port;
|
||||
}
|
||||
}
|
||||
var reg = new RegExp(
|
||||
// a simple, but exact match
|
||||
"https?:\\\\/\\\\/" +
|
||||
string +
|
||||
"|" +
|
||||
// following ['"] + exact
|
||||
"('|\")\\/\\/" +
|
||||
string +
|
||||
"|" +
|
||||
// exact match with optional trailing slash
|
||||
"https?://" +
|
||||
string +
|
||||
"(?!:)(/)?" +
|
||||
"|" +
|
||||
// following ['"] + exact + possible multiple (imr srcset etc)
|
||||
"('|\")(https?://|/|\\.)?" +
|
||||
string +
|
||||
"(?!:)(/)?(.*?)(?=[ ,'\"\\s])", "g");
|
||||
return {
|
||||
match: reg,
|
||||
//match: new RegExp("https?:\\\\/\\\\/" + string + "|https?://" + string + "(\/)?|('|\")(https?://|/|\\.)?" + string + "(\/)?(.*?)(?=[ ,'\"\\s])", "g"),
|
||||
//match: new RegExp("https?:\\\\?/\\\\?/" + string + "(\/)?|('|\")(https?://|\\\\?/|\\.)?" + string + "(\/)?(.*?)(?=[ ,'\"\\s])", "g"),
|
||||
//match: new RegExp('https?://' + string + '(\/)?|(\'|")(https?://|/|\\.)?' + string + '(\/)?(.*?)(?=[ ,\'"\\s])', 'g'),
|
||||
//match: new RegExp("https?:\\\\/\\\\/" + string, "g"),
|
||||
fn: function (req, res, match) {
|
||||
var proxyUrl = req.headers["host"];
|
||||
/**
|
||||
* Reject subdomains
|
||||
*/
|
||||
if (match[0] === ".") {
|
||||
return match;
|
||||
}
|
||||
var captured = match[0] === "'" || match[0] === '"' ? match[0] : "";
|
||||
/**
|
||||
* allow http https
|
||||
* @type {string}
|
||||
*/
|
||||
var pre = "//";
|
||||
if (match[0] === "'" || match[0] === '"') {
|
||||
match = match.slice(1);
|
||||
}
|
||||
/**
|
||||
* parse the url
|
||||
* @type {number|*}
|
||||
*/
|
||||
var out = url.parse(match);
|
||||
/**
|
||||
* If host not set, just do a simple replace
|
||||
*/
|
||||
if (!out.host) {
|
||||
string = string.replace(/^(\/)/, "");
|
||||
return captured + match.replace(string, proxyUrl);
|
||||
}
|
||||
/**
|
||||
* Only add trailing slash if one was
|
||||
* present in the original match
|
||||
*/
|
||||
if (out.path === "/") {
|
||||
if (match.slice(-1) === "/") {
|
||||
out.path = "/";
|
||||
}
|
||||
else {
|
||||
out.path = "";
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Finally append all of parsed url
|
||||
*/
|
||||
return [
|
||||
captured,
|
||||
pre,
|
||||
proxyUrl,
|
||||
out.path || "",
|
||||
out.hash || ""
|
||||
].join("");
|
||||
}
|
||||
};
|
||||
};
|
||||
/**
|
||||
* Remove 'domain' from any cookies
|
||||
* @param {Object} res
|
||||
*/
|
||||
module.exports.checkCookies = function checkCookies(res) {
|
||||
if (typeof res.headers["set-cookie"] !== "undefined") {
|
||||
res.headers["set-cookie"] = res.headers["set-cookie"].map(function (item) {
|
||||
return rewriteCookies(item);
|
||||
});
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Remove the domain from any cookies.
|
||||
* @param rawCookie
|
||||
* @returns {string}
|
||||
*/
|
||||
function rewriteCookies(rawCookie) {
|
||||
var objCookie = (function () {
|
||||
// simple parse function (does not remove quotes)
|
||||
var obj = {};
|
||||
var pairs = rawCookie.split(/; */);
|
||||
pairs.forEach(function (pair) {
|
||||
var eqIndex = pair.indexOf("=");
|
||||
// skip things that don't look like key=value
|
||||
if (eqIndex < 0) {
|
||||
return;
|
||||
}
|
||||
var key = pair.substr(0, eqIndex).trim();
|
||||
obj[key] = pair.substr(eqIndex + 1, pair.length).trim();
|
||||
});
|
||||
return obj;
|
||||
})();
|
||||
var pairs = Object.keys(objCookie)
|
||||
.filter(function (item) {
|
||||
return item.toLowerCase() !== "domain";
|
||||
})
|
||||
.map(function (key) {
|
||||
return key + "=" + objCookie[key];
|
||||
});
|
||||
if (rawCookie.match(/httponly/i)) {
|
||||
pairs.push("HttpOnly");
|
||||
}
|
||||
return pairs.join("; ");
|
||||
}
|
||||
module.exports.rewriteCookies = rewriteCookies;
|
||||
//# sourceMappingURL=proxy-utils.js.map
|
Reference in New Issue
Block a user