hexllo 发表于 2021-4-28 11:07:51

版本为15,跨域导出时不能文件类型

本帖最后由 Crystal.Li 于 2021-4-28 14:06 编辑

报表是前后端分离的,前端是VUE,后端是NETCORE,
当跨域导出时,不能识别导出的文件类型,如下图:


按chrome的F12,打开Network选项卡,再次点导出抓取请求的地址,
把该地址在浏览器的新标签打开,能正常导出(直接下载文件)

下图是2种方式的请求数据截图,右边是复制URL新标签打开能正常导出

由此总结是由于跨域原因导致不能识别导出文件类型,希望官方团队能模拟这种场景排查下问题,谢谢!

Crystal.Li 发表于 2021-4-28 11:07:52

研发反馈,您可以在跨域设置中再添加这么一条关于header的设置尝试下:
HttpContext.Current.Response.AddHeader("Access-Control-Expose-Headers", "Content-Disposition");

Crystal.Li 发表于 2021-4-28 14:06:00

您那边能提供下重现问题的demo 吗?
JSViewer 默认的导出按钮是直接下载导出文件的,并没有另存为对话框,因为不确定您那边具体的实现是怎么样的,无法重现问题呢

hexllo 发表于 2021-4-28 16:50:51

DEMO在附件中了,
下载下来之后,
后端用VS的控制台启动,
前端用npm run dev启动,
然后点导出,DEMO的情况和我们遇到的情况类似,
本来要导出xls,但却导出成rdlx,
只要把前端webpack.config里的代理取消注释,
并把Viewer.vue的11到13行注释,
再把App.vue的26行注释,放开27行,
就能正常导出,
但我们生产环境前端是打包成纯静态的,不能像DEMO里这样做代理,
必须跨域,所以就存在导出错误的问题

hexllo 发表于 2021-4-28 16:51:42

前端的端口是8081,后端已经做了跨域配置了

James.Lv 发表于 2021-4-28 17:20:01

hexllo 发表于 2021-4-28 16:51
前端的端口是8081,后端已经做了跨域配置了

好的我们这边尽快验证一下给您回复

Crystal.Li 发表于 2021-4-30 10:33:19

您好,这个问题我们已经验证了,确实存在您说的问题,我们会将此问题提交给研发团队处理,有解决方案了第一时间通知您~:P

hexllo 发表于 2021-5-10 16:05:22

加了这个之后就解决了,非常感谢!

Crystal.Li 发表于 2021-5-10 16:09:52

hexllo 发表于 2021-5-10 16:05
加了这个之后就解决了,非常感谢!

不客气~~ 方便的话,您可以对我的服务评分哦,5分为非常满意~
页: [1]
查看完整版本: 版本为15,跨域导出时不能文件类型