找回密码
 立即注册

QQ登录

只需一步,快速开始

AR_hsl88

注册会员

9

主题

46

帖子

133

积分

注册会员

积分
133
AR_hsl88
注册会员   /  发表于:2022-10-12 14:06  /   查看:8237  /  回复:31
1金币

IIS+ASP.NET+activeReports12+htmlviewer
报表在查看时无法预览,预览这里加载错误



会提示跨域请求的问题,
Access to XMLHttpRequest at 'https://auth.siam.sinopec.com/idp/profile/SAML2/Redirect/SSO?SAMLRequest=lVPNbhshEL5X6jsg7jYsXtUJWjta2apkqWkj2%2B0hNwKzCtIu2MAmaZ%2B%2Bw9qJLVV1lAuHmfn%2BBqhuXrqWPEGI1rsZLcac3sw%2Ff6r2haz79OjWsO8hJrJazqg1XwoxmTa8meqyKfG4EpyXDxor5vpBqCklv16ZBDKRVYw9rFxMyiUscSFGBR8VYssnUlzLko%2BvyrIo%2BeSekiXKWKfSgH5MaRclYwo9jKNVHR7O70CPte%2BYNTu2C76xLbBNfftNsDUYG0Anttn8yLJ3Kkb7BDPaqDYCJRjSRbkvZrQPTnoVbZROdRBl0jJTSPQrkTN57VuKGyCkGtyHA%2FYyENUgZOd0%2Fuo8%2FmnPPVfswHZgxu1%2BR5LV8s63Vv8mX33oVLqskSvWjJphVKagXLTgEiV12%2FrnRQCVMO829BiXHWQW3hmbbcUPhshoxNe9QQkNa7yaYHXuHVtnzfm7d1Wxt9kjMfsfc8VOnt9WdXyDYIYXiQMJXtLJ46m2aDHDGpoPpr04pqXOrFje1rc%2FEZNn8vN69sHkIP%2FKH5NccD40z%2F%2FX%2FC8%3D' (redirected from 'http://szl.sinopec.com/ActiveReports.ar12?Token=6c4d3439-8504-4ed7-b684-8a3f09011d67&Command=Export&ExportType=Html&WebViewer=true&RenderMode=Galley&Generation=1') from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.


一开始在测试环境只有一台服务器,直接用http协议+IP地址访问系统,报表查看都是正常的。


然后现在报表上了正式生产环境,使用了https协议访问,系统访问使用了https,但是报表服务加载好像还是用的http, 目前尝试了两种方案
一是在IIS中添加http响应头
Access-Control-Allow-Headers       Content-Type, api_key, Authorization 和 Access-Control-Allow-Origin          *   
二是在global   Application_EndRequest中 针对 ReportService.asmx 请求添加强行替换http为https
这两种方案都不行,都不好使。

最终尝试在ReportViewer.aspx这个展示页面,head添加了<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
这个方法对谷歌浏览器和Edge浏览器可以正常加载报表,但是对搜狗浏览器、360浏览器还是加载错误,还是提示has been blocked by CORS policy: No 'Access-Control-Allow-Origin'

所以想请教一下各路大神,这种使用https访问系统,ActiveReport报表却仍使用http加载,导致加载错误有什么解决方法?

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

31 个回复

正序浏览
Eden.SunWyn认证
超级版主   /  发表于:2022-10-24 16:11:41
32#
您好,前面说的Nginx转发,您看能尝试一下吗?通过nginx把https的请求转发到http。

就是我们同事前面和您说的
您可以参考一下这个帖子:
https://gcdn.grapecity.com.cn/showtopic-152917-1-1.html
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-24 08:53:43
31#
James.Lv 发表于 2022-10-21 18:43
这个我们这边验证一下,看如何把报表发布成HTTPS,或者咱们可以先把咱们的项目发布成HTTP,应该暂时可以 ...

我们现在是正式环境了,要求使用https协议,不能改成http协议访问
还是要各位版主验证一下https访问rdlx报表,看看能否有啥解决办法
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-21 12:59:52
29#
Felix.Li 发表于 2022-10-20 18:44
现在确实是有关系,但是不是在项目本身上,而是在咱用http发布的AR,又用https请求AR的资源。

可以先 ...

是同一个项目。

我是先用AR报表设计器,编辑好报表模板(rdlx文件),设计好格式、绑定数据保存,然后把这个报表模板文件(rdlx文件)拷贝到项目目录中,web网页中注册了
<%@ Register Assembly="GrapeCity.ActiveReports.Web.v12, Version=12.2.13986.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" Namespace="GrapeCity.ActiveReports.Web" TagPrefix="ActiveReportsWeb" %>
通过这个组件的WebViewer去调用这个rdlx文件,加载报表数据的

<ActiveReportsWeb:WebViewer ID="WebViewer1" runat="server" Height="100%" ViewerType="AcrobatReader" RenderMode="Galley">
                        <FlashViewerOptions MultiPageViewColumns="1" MultiPageViewRows="1"></FlashViewerOptions>
                    </ActiveReportsWeb:WebViewer>

这个web页面是在同一个项目目录中的,一起发布的,同一个80端口
系统访问是https协议,但是报表加载这里却好像一直是http协议
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2022-10-20 18:44:28
28#
本帖最后由 Felix.Li 于 2022-10-21 09:37 编辑
AR_hsl88 发表于 2022-10-20 17:21
出现这个Access-Control-Allow-Origin问题跟ActiveReport这个webviewer控件有没有关系啊
GrapeCity.Acti ...

现在确实是有关系,但是不是在项目本身上,而是在咱用http发布的AR,又用https请求AR的资源。

可以先明确一下你现在发布的AR和你自己的项目是同一个项目吗?首先得明确,如果是同一个项目不可能存在跨域问题,是吧,因为他们本身都是同源的,如果他们不是用一个,肯定相当于发布在不同端口上,而且发布的协议不一样,咱的AR项目是自己写在您的项目中呢,还是直接跑的我们这边提供的,然后咱们直接发布了。
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-20 17:21:24
27#
Felix.Li 发表于 2022-10-20 15:14
那你系统网站发布的端口也不应该是80吧,你设置成你发布的端口。

出现这个Access-Control-Allow-Origin问题跟ActiveReport这个webviewer控件有没有关系啊
GrapeCity.ActiveReports.Web.v12, Version=12.2.13986.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
毕竟系统访问是https协议,为什么webviewer在加载这个报表模板的时候还是用http协议去访问的呢
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-20 15:24:27
26#
Felix.Li 发表于 2022-10-20 15:14
那你系统网站发布的端口也不应该是80吧,你设置成你发布的端口。

系统网站是80端口
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2022-10-20 15:14:06
25#
AR_hsl88 发表于 2022-10-20 14:06
AR报表没有做什么单独发布啊,是跟我系统网站在一起发布的

那你系统网站发布的端口也不应该是80吧,你设置成你发布的端口。
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-20 14:06:16
24#
Felix.Li 发表于 2022-10-20 13:42
80是浏览器默认访问的端口把,这里你不应该写你AR发布的端口嘛

AR报表没有做什么单独发布啊,是跟我系统网站在一起发布的
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2022-10-20 13:42:42
23#
AR_hsl88 发表于 2022-10-20 13:35
如果用星号,也是提示origin null

80是浏览器默认访问的端口把,这里你不应该写你AR发布的端口嘛
回复 使用道具 举报
AR_hsl88
注册会员   /  发表于:2022-10-20 13:35:57
22#
AR_hsl88 发表于 2022-10-20 13:34
也不行
我把几种情况都列一下

如果用星号,也是提示origin null  
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部