【发布时间】:2021-03-12 05:57:55
【问题描述】:
我正在使用 https://www.npmjs.com/package/ngx-ssrs-reportviewer 以角度呈现 SSRS 报告
但它不允许我这样做并给我一个错误:
Refused to display 'http://SSRSServerName/Reports' In a frame, because it set `X-Frame-Options` to `SAMEORIGIN`.
我通过安装 chrome 扩展程序 https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe 绕过了这个错误 本地。但很明显,我不能强迫用户安装这个插件来加载报告。
我知道响应标头在响应中设置为服务器端。 Angular 在客户端中运行,与此无关。 但是解决这个问题的可能方法是什么。
更新
我尝试在 Global.asax 文件中允许 ssrs 端的 CORS
<%@ Application Inherits="Microsoft.ReportingServices.WebServer.Global" %>
<%@ Import namespace="System.Web" %>
<%@ Import namespace="System.Security" %>
<script runat="server">
protected void Application_BeginRequest()
{
string origin = Request.Headers.Get("Origin");
if (Request.HttpMethod == "OPTIONS")
{
Response.AddHeader("Access-Control-Allow-Origin", origin);
Response.AddHeader("Access-Control-Allow-Headers", "*");
Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,PUT,OPTIONS,DELETE");
Response.StatusCode = 200;
Response.End();
}
else
{
Response.AddHeader("Access-Control-Allow-Origin", origin);
Response.AddHeader("Access-Control-Allow-Headers", "*");
Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,PUT,OPTIONS,DELETE");
} } </script>
但它给了我错误
拒绝在框架中显示,因为它将“X-Frame-Options”设置为“sameorigin”
【问题讨论】:
-
正如您所说,响应标头设置在服务器端,因此您的客户端无法(也不应该尝试)绕过它们。看看这个类似的问题。 stackoverflow.com/questions/25098021/…
-
我试图从报告服务器设置它,因为我有访问权限,但它仍然无法正常工作。加载时遇到的错误“X-Frame-Options”标头不是可识别的指令。标题将被忽略。我正在关注这个答案stackoverflow.com/a/38712051/5729812
-
您能否展示一些代码以便更好地理解?
-
我刚刚更新了我的问题,请看。
标签: angular same-origin-policy x-frame-options