2017-09-30 2 views
2

Intégrer un mot au hasard MS Word doc, que je trouve sur Internet, fonctionne si je coder en dur l'URL:

<iframe src="http://docs.google.com/gview?url=https://d9db56472fd41226d193-1e5e0d4b7948acaf6080b0dce0b35ed5.ssl.cf1.rackcdn.com/spectools/docs/wd-spectools-word-sample-04.doc&embedded=true"></iframe> 

Cependant, je souhaite obtenir l'URL par AJAX, alors j'ai changé le code HTML pour

<iframe src="{{cvUrl}}&embedded=true"></iframe> 

mais même hardcoding que $scope variable dans mes JS:

$scope.cvUrl = 
    'http://docs.google.com/gview?url=https://d9db56472fd41226d193-1e5e0d4b7948acaf6080b0dce0b35ed5.ssl.cf1.rackcdn.com/spectools/docs/wd-spectools-word-sample-04.doc'; 

donne

Object not found! 

The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error. 

If you think this is a server error, please contact the webmaster. 

Error 404 

localhost 
Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.24 

Cela semble assez basique - ce que je fais mal?

Répondre

2

Vous devez utiliser $sce.trustAsResourceUrl

var cvUrl = 
'http://docs.google.com/gview?url=https://d9db56472fd41226d193-1e5e0d4b7948acaf6080b0dce0b35ed5.ssl.cf1.rackcdn.com/spectools/docs/wd-spectools-word-sample-04.doc&embedded=true'; 

$scope.cvUrlTrusted = $sce.trustAsResourceUrl(cvUrl); 

et HTML:

<iframe ng-src="{{cvUrlTrusted}}"></iframe> 

Demo Fiddle


<iframe src="{{cvUrl}}&embedded=true"></iframe> <!-- wrong syntax --> 

ou:

<iframe ng-src="{{cvUrlTrusted + '&embedded=true'}}"></iframe> 

ne fonctionne pas aussi à cause de la politique, de sorte que vous devez passer à travers $sce URL complète

+0

Maxim, je ne peux pas le comprendre - cela fonctionne parfaitement pour moi, *** *** MAIS, Je l'utilise 'localhost 'ou mon vrai site web, je reçois 404" pas trouvé ". Si je copie l'URL "non trouvé" et supprime le '& embedded = true' final, je suis invité à télécharger le fichier, donc évidemment, il existe. Une idée de ce que je fais à tort? – Mawg

+1

@Mawg Je ne connais pas la configuration de votre projet, donc je ne peux pas vous donner le bon conseil. Essayez de google 'embedded' flag –

+0

Je ne vois aucune différence dans le code. Que pouvez-vous faire avec le drapeau 'embedded', excepté le réglage' true'. Je ne trouve aucune documentation en ligne - avez-vous une URL? Je me demande si c'est une chose d'autorisation - peut-être quelque chose dans 'htaccess' ... – Mawg

0

Ici, vous devez importer les AngularJS services prédéfinis:

$ désinfectez $ sce injecter ces dans votre contrôleur et vous pouvez remplacer ou re-concevoir l'URL, parce que si vous utilisez directement, il ne rendra pas cette URL, car il est l'un des politique de sécurité pour rendre la chose non sur la page Web,

En HTML:

<iframe ng-src="{{urlHere}}"></iframe> 

dans le contrôleur JS:

var app = angular.module('app', ['ngSanitize']); 

app.controller('Ctrl', function($scope, $sanitize, $sce) { 
    var Url = 
    'http://yoururl.com.doc&embedded=true'; 

    $scope.urlHere= $sce.trustAsResourceUrl(Url); 
});