资源解释为Document但使用MIME类型application / pdf进行传输

时间:2016-09-21 15:35:32

标签: asp.net-mvc html5 pdf

请参阅以下代码:

控制器:

public ActionResult GetPDF()
{
    byte[] pdf = GetPdfFromDatabase();
    return new FileContentResult(reportData, "application/pdf");
}

查看:

<iframe src="@Url.Action("GetPDF","Account")" width="600" height="500"></iframe>

Javascript控制台:

enter image description here

  

每次加载页面时,都会显示此警告!!!

3 个答案:

答案 0 :(得分:14)

iframe使用内容类型text / html请求src属性中提到的资源。所以这条消息只说&#34;我请求了html,但是服务器用pdf&#34;

答案 1 :(得分:6)

我相信警告不容忽视。

我发现这个问题的替代方法,使用object标签,如下所示:

&lt; object data =“your-data-base-64”type =“application / pdf”&gt;&lt; / object&gt;

如果您使用angularJS,以防止控制台出错:

&lt; object ng-attr-data =“your-data-base-64”type =“application / pdf”&gt;&lt; / object&gt;

答案 2 :(得分:4)

谁遇到这个话题。 (我也是。)为了获得最佳解决方案,您需要创建HTML页面以充当iframe登录页面以显示PDF内容。

这是示例html。我只是从chrome中提取。

<html><body style="background-color: rgb(38, 38, 38); height: 100%; width: 100%; overflow: hidden; margin: 0px;"><embed width="100%" height="100%" name="plugin" id="plugin" src="your_pdf_url" type="application/pdf"></body></html>

只需将your_pdf_url替换为您的真实网址即可。我只是在Laravel中将此html添加为中间件并显示此HTML,以便Chrome不再发出警告。您可以使用此html作为基础,并创建更好的pdf登录页面,如自定义加载。