2015-02-17 32 views
11

Mam małą aplikację AngularJS, w której próbuję otworzyć przesłany obraz i pojawia się problem, w którym kątowy dodaje "niebezpieczny:" na początku adresu URL . Dodałem następujący wiersz w moim app config sanitize URL, ale nie działa dla mnie:Kątowe dodanie "niebezpieczny" do adresu URL podczas próby pobrania pliku

$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob:chrome-extension):|data:image|\//); 

Używam kątowa v1.3.0 więc używam poprawną nazwę właściwości. Używam głównie Chrome, ale mam ten sam problem w innych przeglądarkach. Również początek mojego obrazu wygląda tak:

unsafe:data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg... 

Każdy pomysł, czego brakuje w moim regex? Z góry dziękuję!

+0

Być może zechcesz usunąć ostateczne '|' lub cokolwiek, co ma przedni ukośnik zostanie dopasowane. – ndn

+0

Jeśli mógłbyś uprościć opis problemu, ktoś mógłby ci pomóc. Używasz wyrażeń regularnych do czegoś. Możesz robić tylko rzeczy takie jak znajdź/zamień itd. Każdy silnik rozumie proste wyrażenie, którego używasz. – sln

+0

@ sln: s/on przechodzi regex do tej metody kątowej: [https://docs.angularjs.org/api/ng/provider/$compileProvider](https://docs.angularjs.org/api/ng/ provider/$ compileProvider) –

Odpowiedz

0

Jeśli zostaniesz $compileProvider.imgSrcSanitizationWhitelist() bez parametru regexp, to zwróci aktualnie zdefiniowane wyrażenie regularne.

Uruchomienie tego kodu na pustym kątowej 1.3.0:

app.config(function ($compileProvider) { 
    console.log($compileProvider.imgSrcSanitizationWhitelist()); // 
}); 

Mam ten wynik - /^\s*((https?|ftp|file|blob):|data:image\/)/

I base64 zakodowane w formacie JPEG przy użyciu podstawowego <img ng-src="{{main.src}}"> faktycznie działa jak widać here i another one z png. Spójrz również na konsolę, aby zobaczyć wyrażenie regularne.

Kolejny test Zabrakło mi jest przeniesienie data:image/jpeg;base64, poza zakresem zbindowanych ciąg i umieścić go na NG-SRC

<img ng-src="data:image/jpeg;base64,{{main.src}}">

Jak widać to worked również.

Na długą historię - nie trzeba definiować wyrażenia regularnego w wersji 1.3.0 i wyższej dla danych: image/*, jak to jest zdefiniowane domyślnie.

Nie mogę być pewien, na czym polega problem, ale być może masz inną definicję imgSrcSanitizationWhitelist gdzieś w kodzie lub uri danych jest zepsuta.

Powiązane problemy