2016-12-29 8 views
3

Ionic Native Cameraプラグインを使用して画像を撮影し、base64で保存しています。Ionic 2 Angular 2 HTTP Post Base64画像をサーバーに送信すると、安全でないURLが送信される

次に、そのイメージをAmazon s3に送信して保存します。

私はなど、base64で画像、bucketname、キー名を含む私のAPIにPOST経由でパッケージを送信

HTTPは私のサーバーにデータを送信する前に私は私のコンソールに警告が言ってます:「WARNING:消毒、安全でありませんURL値のデータ:image/jpeg; base64 "

私はいくつかの調査を行い、受信者に有害な可能性のあるXSSが含まれている可能性があるため、AngularはURLをサニタイズすることを発見しました。

私のURLがきれいであることを知っているので、送信する前にDomSanitizerをインポートし、画像に「bypassSecurityTrustUrl」を使用しました。

以前と同じエラーメッセージが表示されます。

送信HTTP投稿でこれを無効にする方法はありますか?私はまだ入ってくるデータのためにそれを保持したいと思う。

はここで、

私は「PKGアップロードプロフィール画像を」ログコンソール

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import { DomSanitizer } from '@angular/platform-browser'; 


@Injectable() 
export class ImageService { 

    constructor(
     private http: Http, 
     private sanitizer: DomSanitizer 
     ) {} 

    uploadProfileImage(userInfo, image) { 

     return new Promise(resolve => { 
     let pkg = { 
      image: this.sanitizer.bypassSecurityTrustUrl(image), 
      name: userInfo.uid, 
      folder: 'profileImages', 
      email: userInfo.email 
     } 

     console.log('pkg upload profile image', JSON.stringify(pkg)); 
     this.http.post('https://myurl/api/uploadpicture', pkg) 
      .subscribe(res => console.log('response from upload picture', JSON.stringify(res))); 

     }) 
    } 

} 
は、画像値は、Amazon S3からこの {"image":{"changingThisBreaksApplicationSecurity":"data:image/jpeg;base64,file:///var/mobile/Containers/Data/Application/xxxxxxxxxx/tmp/cdv_photo_007.jpg"},

私の応答が細かいように見える...画像サービスコードでありますファイルは正しいキー名で正しいバケットに投稿されますが、イメージは破損しており、〜80バイトしかありません。

私は本当にいくつかの助けに感謝して、これは角膜1.xを使用して私のイオン1アプリで正常に動作していた。

ありがとうございました

答えて

1

私はそれを理解しました。

私はCordova Camera getPictureにオプションを入れていませんでした。

私は

let options = { 
      quality : 75, 
      destinationType : Camera.DestinationType.DATA_URL, 
      sourceType : Camera.PictureSourceType.CAMERA, 
      allowEdit : true, 
      encodingType: Camera.EncodingType.JPEG, 
      targetWidth: 300, 
      targetHeight: 300, 
      saveToPhotoAlbum: false 
     }; 

を追加し、今では正常に動作します。

オプションを渡していないときは、「画像」は私の一時的なカメラロールフォルダ(ios)のURLになります。私がオプションを渡すとき、 "イメージ"はbase64であり、私はもはや警告を受け取りません。

関連する問題