在Electron中,是否可以拦截对file:///的请求并将它们重定向到http?
我已经检查了电子protocol页面,但如果支持与否则不明显。
答案 0 :(得分:0)
您可以使用protocol.registerHttpProtocol与方案file:
拦截const {app, protocol} = require('electron')
const path = require('path')
app.on('ready', () => {
protocol.registerHttpProtocol('file', (request, callback) => {
const url = request.url.substr(8)
callback({url: 'http://example.com/' + url)})
}, (error) => {
if (error) console.error('Failed to register protocol')
})
})
个请求,而不是发出HTTP请求。
示例(未经测试):
{{1}}
注意:此示例可能需要精炼,因为文件路径可能包含驱动器号,这对于HTTP请求无效。
答案 1 :(得分:0)
还有另一种方式可以解决这个问题,有趣的是,问题中的“拦截”一词与之有很大关系:)
可以使用的协议对象上有一个函数interceptHttpProtocol()。
示例代码:
app.on("ready", () => {
protocol.interceptHttpProtocol("http", function(request, callback) {
var parsedUri = url.parse(request.url);
var filePath = path.join(__dirname, parsedUri.pathname);
request.url = "file://" + filePath;
callback(request);
});
var mainWindow = new BrowserWindow();
mainWindow.loadURL("http://localhost/index.html");
});
希望有帮助