记录读卡器调用跨域问题的解决思路

简介: 1.环境不同遇到差异性问题2.跨域问题3.问题解决思路

一.读卡器的调用过程

1.本地客户端下载相关的读卡器的驱动包,里面已经写好了浏览器读卡身份证基本信息的demo信息。

2.将读卡器连接电脑,通常为USB接口插入即可,按照操作说明安装驱动信息。

3.解压下载的文件后先找到sdk里自带的测试工具测试读卡器是否正常工作,指示灯是否亮等。

4.放入二代身份证点击获取身份证信息按钮能获取到信息表示读卡器连接成功.

5.通过浏览器的访问demoHTML文件访问默认接口,读卡器放上有效身份证,点击按钮如果控件安装失败会有脚本报错信息,如果出现如下所示说明IE已经读取到身份证信息,接下来就是根据你实际的业务模块集成到你的web系统了。

二.问题反馈

近期有项目反馈该功能出问题了,需要在浏览器中通过读卡器设备读取身份证信息,使用谷歌打开,报了如下跨域问题

image.png

看错误信息为跨域问题。开始考虑问题原因,经过测试发现部分浏览器功能正常使用,没有出现跨域报错信息,换其他环境测试出现偶发现象。

三.问题定位

1.何为跨域

     前后端不在同一个域就会存在跨域问题。

2.跨域原因

产生跨域的原因:浏览器,具体说是浏览器的“同源策略”。

浏览器的同源策略用于隔离潜在恶意文件的重要安全机制。

跨域产生的原因是下面三点:

1、浏览器的限制

2、跨域

3、请求是XHR(XMLHttpRequest)

现在跨域问题很常见,很多项目采用了前后端分离的模式进行开发的,前后端代码部署再不同的服务器上。

     问题排查

刚开始想还是代码问题处理有bug,但该功能已正常使用一段时间,突然出现bug问题,还是外部环境因素较大,经过对比浏览器配置和版本信息,发现还是有很大差别的,考虑客户端版本的问题,应该是升级了谷歌浏览器后出现一些配置的问题。

四.问题解决

问题找到了,如何解决有多种方案,通常百度搜索解决浏览器跨域问题解决方案有很多。

1.浏览器配置变更,通过修改特定配置。

进入谷歌浏览器,在网址栏输入下方路径访问   chrome://flags/

找到关键字查询 Block insecure private network requests.

image.png

查询后,修改为“Disabled”,并Relaunch重新启动下,点击后会自动重启浏览器。重启后,就解决了此跨域问题。

但考虑到客户端的用户群体,这样的操作太过于负责,不推荐。

2.研发人员修改代码 JSONP实现

JSONP包含两部分:回调函数和数据。

回调函数是当响应到来时要放在当前页面被调用的函数。

数据就是传入回调函数中的json数据,也就是回调函数的参数了。

jsonp虽然很简单,但是有如下缺点:

1)安全问题(请求代码中可能存在安全隐患)

2)要确定jsonp请求是否失败并不容易

image.png

经过测试,身份证读取跨域问题得到解决。


总结

跨域问题在目前后端分离的架构中普遍存在,互联网中也有很多解决方案,虽然都能够解决跨域问题,但其实各有优劣。比如Jsonp方式实现起来较为简单,但只支持GET请求方式,在原生JavaScript脚本中使用方便,但是当利用了如Vue.js这种MVVM框架时就有些难以施展了。我们要在实际情形中比较分析,选择最合适的方案。




目录
相关文章
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
|
8月前
|
存储 缓存 Java
从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)
从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)
195 1
|
8月前
|
存储 JavaScript
uniapp在不需要后端数据的情况下 怎么记录用户进一次记录一次
uniapp在不需要后端数据的情况下 怎么记录用户进一次记录一次
123 0
|
存储 前端开发
网络基础 登录对接CAS-跨域导致的一个意想不到的Bug
网络基础 登录对接CAS-跨域导致的一个意想不到的Bug
213 1
|
前端开发 Java 数据安全/隐私保护
基于拦截器实现线上演示站点只能查看不可操作得要求
基于拦截器实现线上演示站点只能查看不可操作得要求
100 0
|
前端开发
前端学习笔记202303学习笔记第五天-连续调用多个过滤器
前端学习笔记202303学习笔记第五天-连续调用多个过滤器
74 0
|
架构师 数据挖掘
网站数据池里原来藏着这些后台数据逻辑
网站数据池里原来藏着这些后台数据逻辑
127 1
网站数据池里原来藏着这些后台数据逻辑
|
消息中间件 JavaScript 小程序
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
|
中间件 开发工具 数据库
协同开发时巧用gitignore | 巧用中间件 避免网络请求时携带登录信息
今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题。
123 5
|
缓存 网络协议
来自浏览器原理的双倍快乐,搞懂了数据包的传输和为什么页面第二次打开快
本文分享浏览器关于数据包的传输和为什么页面第二次打开快的知识点。
260 0

热门文章

最新文章