ich den obigen Fehler erhalten, wenn eine Google-Karte
Ansicht
<div class="main" ng-repeat="item in Ctrl.Opportunities.PagedData.Results">
<div class="pull-right" id="GoogleMaps" ng-show="Ctrl.GetSafeUrl('https://www.google.com/maps/embed/v1/place?q={{item.PostCode}}&key=mykey')" />
<!--////// Simple Embeded API Using PostCode //////////-->
<iframe width="200" height="200" frameborder="0" style="border:0" ng-src="{{Ctrl.SafeURL}}" allowfullscreen></iframe>
</div>
</div>
-Controller angezeigt werden versuchen - mit Typoskript
class OpportunityListController extends BaseEmployedController {
static controllerId = 'opportunityListController';
static $inject = [ '$http', '$sce', OpportunityService.serviceId
];
public Opportunities: O.Employed.OpportunityListResult;
public MapsURL: string = "";
private SafeURL: string = "";
constructor(protected $modal: ng.ui.bootstrap.IModalService,
protected $http: ng.IHttpService,
private $sce: ng.ISCEService,
private OpportunityService: OpportunityService,
) {
this.Opportunities = new O.Employed.OpportunityListResult();
}
public GetSafeUrl(Url: string) {
if (Url) {
this.SafeURL = this.$sce.getTrustedUrl(Url);
}
return this.SafeURL;
}
}
Am mit der Methode GetSafeUrl(), da vorher war ich ein $ interpolieren bekommen: noconcat
Fehleraktualisieren
ich versucht, die Vorschläge von Niels als solche zur Verfügung gestellt zu implementieren:
-this.$sce.trustAsResourceUrl(Url);
meine url Zuordnung geändert, aber die Elemente nicht geladen werden, und ich erhielt eine 414 Request-URI Too Large
ich habe Content-Security-Politik Meta-Tag meiner _Layout.cshtml aber verschiedene Fehler
erhalten 0Refused to apply inline style because it violates the following Content Security Policy directive: "default-src *". Either the 'unsafe-inline' keyword, a hash ('sha256-ZDjCdTstFUpLDovBdF6MXbSPB35alPr6sy4CYtyHSA4='), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'style-src' was not explicitly set, so 'default-src' is used as a fallback.
plus die gleichen „$ sce: unsicher“ Fehler
Aber ich denke, wo ich falsch habe, ist in dem Weg gegangen, dass ich die Methode unten verwenden, die noch in Angularjs war.
SceDeleagateProvider
angular.module('myApp', []).config(function($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist([
// Allow same origin resource loads.
'self',
// Allow loading from our assets domain. Notice the difference between * and **.
'https://www.google.com/maps/embed/v1/place**'
]);
Stattdessen habe ich versuche "$sceDelegateProvider"
in meinen Controller zu injizieren und ordnet es Wert ist, als private $sceDelegateProvider: ng.ISCEDelegateProvider
, in dem Controller-Konstruktor
Ich habe erstellt dann die folgende Methode
public SetSCEDelegateProvider($sceDelegateProvider) {
this.$sceDelegateProvider.resourceUrlWhitelist(["self",
"https://www.google.com/maps/embed/v1/place**"
]);
}
Dies funktioniert aber auch nicht.
Wie sollte ich den Dienst $ sceDelegateProvider korrekt implementieren? Versuchen
danke Niels, woher kommt das src-Argument? ist das das gleiche wie das url-Argument, das ich habe? – HitTheSky
@HitTheSky Ja, nur eine Änderung vorgenommen. Es ist die gleiche Url wie deine. –
danke, ich habe deine Vorschläge versucht und entsprechend aktualisiert. – HitTheSky