gpt4 book ai didi

javascript - 捕获所有 http 请求并将 url 发送给父级

转载 作者:搜寻专家 更新时间:2023-11-01 00:39:29 25 4
gpt4 key购买 nike

服务器.js

var http = require('http');
var url = require('url');
var request = require('request');
var fs = require('fs');
http.createServer(onRequest).listen(85);

function onRequest(req, res) {
if (req.url === "/"){
fs.readFile('/index.html',function(data,err){
if (err){
console.log(err);
return res.end(err);
}

res.write(data);
res.end();
});
}
var queryData = url.parse(req.url, true).query;
if (queryData.url) {
request({
url: queryData.url
}).on('error', function(e) {
res.end(e);
}).pipe(res);
}
else {
res.end("no url found");
}
}

这个程序所做的是通过在 url 末尾添加查询参数从用户选择的远程位置获取文件,如下所示

www.myprogramdomain:85/?url=http://www.domain.com/index.html

如果我尝试执行上述操作,设置 url=http://us.battle.net 它会显示一个没有 css 的网页。我进入浏览器控制台,看到该页面没有任何 css 或 javascript,因为脚本包含在本地标签中,例如“/scripts/myscript.js”或其他内容。我打算做的是将来自服务器的网络数据嵌入到 iframe 中,并在文件请求到来时拦截它们。

问题是,在 iframe 内部,我如何拦截 http 请求并获取请求试图发送到服务器的 url。最好是一个字符串。我四处寻找了很久。我什至试图用“http://www.myprogramdomain.com:85/?url=http”替换“http”的所有实例。 ' 但这并没有像预期的那样工作,因为一些 url 例如 '/scripts/js.js' 中没有 'http'。这就是为什么我希望能够拦截请求并从请求中获取 url。或者我想在每次从 iframe 发出 http 请求时运行一个脚本。

我想做的是拦截iframe里面的http请求,替换成我自己的请求。

如果您需要更多解释,请不要害怕询问更多信息!

最佳答案

您能否尝试以下修改后的代码并根据需要进一步重构..

var http = require('http');
var url = require('url');
var request = require('request');
var fs = require('fs');
http.createServer(onRequest).listen(85);

function parseCookies (req) {
var list = {},
rc = req.headers.cookie;

rc && rc.split(';').forEach(function( cookie ) {
var parts = cookie.split('=');
list[parts.shift().trim()] = decodeURI(parts.join('='));
});

return list;
}

function onRequest(req, res) {
if (req.url === "/"){
fs.readFile('/index.html',function(data,err){
if (err){
console.log(err);
return res.end(err);
}

res.write(data);
res.end();
});
}

var getExternal = function(extUrl) {
request({
url: extUrl
}).on('error', function(e) {
res.end(e);
}).pipe(res);
};

var queryData = url.parse(req.url, true).query;
if (queryData.url) {
var externalUrl = url.parse(queryData.url);
//res.cookie('externalBaseUrl', externalUrl.protocol + '//' + externalUrl.host);
res.writeHead(200, {
'Set-Cookie': 'externalBaseUrl=' + externalUrl.protocol + '//' + externalUrl.host
});
getExternal(queryData.url);
}
else {
var cookies = parseCookies(req);
if (cookies && cookies.externalBaseUrl) {
//var urlPath = url.parse(req.url).pathname;
getExternal(cookies.externalBaseUrl + req.url);
} else {
res.end("no url found");
}
}
}

我检查为 http://localhost:85/?url=https://iiwebi.com它和 cucumber 一样酷:-)

关于javascript - 捕获所有 http 请求并将 url 发送给父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com