web-dev-qa-db-fra.com

Ressource interprétée comme Document mais transférée avec le type MIME application/pdf

Voir le code suivant:

Manette:

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

Vue:

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

Console Javascript:

 enter image description here

_ {Chaque fois que vous chargez une page, affichez cet avertissement !!!} _

7
Matheus Miranda

Pour qui tombe sur ce sujet. (Moi aussi.) La meilleure solution consiste à créer une page HTML agissant comme une page d'arrivée iframe pour afficher le contenu PDF.

C'est exemple HTML. Je viens d'extraire du 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>

Il suffit de remplacer your_pdf_url par votre véritable URL. Je viens d'ajouter ce code HTML en tant que middleware dans Laravel et d'afficher ce code HTML afin que Chrome ne prévienne plus aucun avertissement. Vous pouvez utiliser ce code HTML comme base et créer une meilleure page de renvoi au format PDF, telle qu'un chargement personnalisé.

2
EThaizone Jo

Un iframe demande à la ressource mentionnée dans l'attribut src avec un type de contenu text/html. Donc, ce message dit seulement "J'ai demandé du HTML mais le serveur a répondu avec pdf" 

14
Burak SARICA

Je crois que l'avertissement ne peut être ignoré.

Une alternative que j'ai trouvée à ce problème, utilise la balise object, comme ceci:

<object data = "your-data-base-64" type = "application/pdf"> </ object>

et si vous utilisez angularJS, pour éviter toute erreur sur la console, procédez comme suit:

<object ng-attr-data = "votre-base-de-données-64" type = "application/pdf"> </ object>

6
Márcio Rossato