拦截java客户端 http请求_Electron使用时拦截HTTP请求的解决方案

背景

最近在做一个Web和Electron共用一份代码的工程,由于使用到了第三方的库(我们是在线地图),该库的认证方式是请求时加key,并且它在后台会校验referer。

于是问题就来了,Electron是运行在本地的,http请求的时候,是不会带有授权Web站点的referer的。导致认证失败,无法调用所需的api接口。

分析

既然HTTP请求发送的时候不带referer,那么我们给他加上去,是不是就可以了呢?

对策

方法1:自定义HTTP协议,在发送请求时,补上referer

//注册自定义协议

protocol.registerStandardSchemes(['app', '自定义协议'], { secure: true})//自定义协议的具体实现

protocol.registerHttpProtocol('自定义协议', (req, cb) =>{

cb({

url: “特定的url地址”,

referrer:"http://被授权的referrer头信息"})

})//发送请求时可以使用 自定义协议://url地址 的形式来发送请求

方法2:修改窗口会话中发送请求前的行为

本来以为方法1以及很完美的解决了问题,但是,在自定义协议认证成功后,在api的使用过程中,api内部主动发送了http请求,这时的api请求没有使用自定义协议,再次认证失败了。于是我想到有个办法,很天真的认为可以解决问题。失败的做法如下&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值