Comment faire de Laravel retour de Vue “Content-Type” en-tête “application/javascript”?
J'essaie de sortie dynamique fichier javascript pour l'inclusion des sites web externes avec le [script src=""]
tag. Comme la vue est à l'aide de la Lame du moteur, c'est rendu comme text/html
.
J'aimerais le Content-Type
- tête pour être mis à application/javascript
de ce point de vue seulement pour éviter de Chrome m'énerve avec des messages comme "Resource interpreted as Script but transferred with MIME type text/html:
"
Mon contrôleur:
{
//...
return View::make('embedded')->with('foo', $foo);
}
La vue elle-même:
<?php
header('Content-Type: application/javascript; charset=UTF-8', true);
?>(function(jQuery) {
//append stylesheets to <head>
var file;
//...
})(jQuery);
J'ai trouvé que je peux utiliser header()
à mon avis, pour ajouter des en-têtes personnalisés comme X-Content-Type
comme prévu, cependant lorsque j'essaie de redéfinir la Content-Type
en-tête, il ne semble pas faire quoi que ce soit même avec le replace
jeu de paramètres comme true
.
Je vais certainement manquer quelque chose d'évident, ici, aimerions connaître votre pointage hors de moi 🙂
Merci beaucoup pour votre aide
OriginalL'auteur Qwindoo | 2013-09-08
Vous devez vous connecter pour publier un commentaire.
Laravel vous permet de modifier les informations d'en-tête via la Réponse de la classe, de sorte que vous avez à faire usage de il. Supprimer la
header
ligne à partir de votre point de vue et essayer comme ça dans votre contrôleur:Et réalisme, le contrôleur est le lieu idéal pour être déconner avec les en-têtes de pas le point de vue de toute façon 😉
Ce n'est pas de travail .!!! Je suis faire () non défini, j'ai hérité de la réponse déjà.
Il devrait travailler avec Laravel 4, mais ne va pas avec Laravel 5.
OriginalL'auteur ciruvan
Dans Laravel 5.4 vous pouvez faire ceci:
BTW, il n'est pas nécessaire de définir l'en-tête de la vue.
OriginalL'auteur Mosty Mostacho
Si vous avez juste JSON dans une variable et que vous souhaitez l'envoyer au navigateur avec le bon type de contenu dans l'en-tête, tout ce que vous devez faire est ceci:
en supposant, évidemment, que
$json
contient votre JSON.Selon les détails de votre situation, il peut être plus judicieux d'utiliser des vues (plutôt que la construction de votre JSON par la concaténation de chaînes de caractères), mais c'est toujours une option si vous utilisez une vue de construire la chaîne. Quelque chose le long de ces lignes devrait fonctionner:
(Toutes mes excuses si j'ai manqué une partie de la question qui exige une plus approche manuelle! Au moins cela devrait être utile à quelqu'un d'autre de venir ici, et vous demandez-vous comment envoyer JSON de Laravel avec le bon type de contenu d'ensemble.)
OriginalL'auteur iconoclast
Réponse::json() n'est plus disponible.
Vous pouvez utiliser la réponse->json() à la place.
Donne:
Avec les en-têtes.
OriginalL'auteur Juangui Jordán
Dans Laravel 5.6:
OriginalL'auteur Finesse
Cela a fonctionné pour moi
return Response::view($landing)->header('X-Frame-Options', 'DENY');
OriginalL'auteur roll