现象:
- 录音拨号未发现录音信息
处理:
- 查看ajax函数返回值,录音拨号之后未获取到相关文件信息
- 也即是直接使用ajax请求数据,接收到的数据为空
- 控制台打印信息:Cross-Origin Read Blocking (CORB) blocked cross-origin responsehttp://192.168.66.3:8080/startdialpassive?channelno=12&telephoneno=10086with MIME type text/plain. Seehttps://www.chromestatus.com/feature/5629709824032768for more details.
- 使用封装的senData函数发送请求,请求了两次
- 录音拨号时单独地址访问能够获取到信息
- 重新安装浏览器工具Orign之后未再报Cross-Origin提示信息
分析:
- 返回值不正常,可能是硬件或者其他操作问题,也可能是前端代码问题。
- 同上,先从前端入手
- 首先,跨域问题,考虑到之前能正常工作,然后出现跨域问题,直接入手浏览器跨域工具,搜索不到可能是过期了,从新下载了一个相关工具。然而得到的结果是没有打印跨域信息仍然访问不到数据
- 使用senData函数方式访问,发送两次请求;
这是因为浏览器对复杂跨域请求的处理,在发送真正的请求前, 会先发送一个方法为OPTIONS的预请求(preflight request), 用于试探服务端是否能接受真正的请求,如果options获得的回应是拒绝性质的,比如404403500等http状态,就会停止post、put等请求的发出。
三种方式可能引起此种情况:a.请求方法不是GET/HEAD/POST
b.POST请求的Content-Type并非application/x-www-form-urlencoded,multipart/form-data,或text/plain
c.请求设置了自定义的header字段 - 录音拨号时单独访问能够获取到数据信息
预想:
- 可能录音拨号单独地址访问是偶然情况,操作失误,排除方式:查看控制台打印信息
- 可能是由于ajax请求配置问题,排除方式:重写ajax配置
- 可能是由于跨域问题仍未解决...(虽然重新安装浏览器工具Orign之后未再报Cross-Origin提示信息)
处理:
- 拨号,看控制台是否打印信息
- 拨号,看直接访问链接是否打印信息
- 拨号,切换ajax访问方式,以script获取callback方式测试看是否能获取数据值(jsonp)
- 浏览器安装新工具:Moesif Orign & CORS Changer,拨号
结果:1-3失败,4成功,跨域工具失效问题
猜想:
- 安装浏览器跨域工具是否具有安全性等负面问题
- 同源问题提示 提示(黄色字体) 和 错误(红色字体)有何区别?(如下两图)
- 跨域问题,若无法有相应后台配合,例如此次的拨号录音,那么是否就无法解决了