Storan Awan Youpai - Bolehkah saya menggunakan API penyerahan borang melalui Angular.JS
高洛峰
高洛峰 2017-05-15 16:49:07
0
4
663

Perniagaan sedia ada sepenuhnya menggunakan aplikasi muka depan Angular.JS satu halaman, dan semua permintaan dihantar melalui ajax.

Sekarang saya mahu memuat naik fail terus ke Youpaiyun pada bahagian klien Saya mencuba muat naik fail sudut, tetapi hasil yang diserahkan ialah

400: tidak terima, terlepas tandatangan

Tangkapan paket mendedahkan bahawa data borang untuk dasar dan tandatangan tidak diserahkan sama sekali.
Inilah yang saya tulis:

    $scope.onFileSelect = function ($files) {
        var file = $files[0]; //这里我只传单个文件
        $scope.upload = $upload.upload({
            url: 'http://v0.api.upyun.com/youguess',
            method: 'POST',
            headers: {'Content-Type': 'multipart/form-data'},
            data: {
                signature: 'youguess',
                policy: 'youguess'
            },
            fileFormDataName: 'file',
            file: file,
            formDataAppender: function (formData, key, value) {
                if (angular.isArray(value)) {
                    angular.forEach(value, function(v) {
                        formData.append(key, v);
                    });
                } else {
                    formData.append(key, value);
                }
            }
        }).progress(function (event) {
            console.log(parseInt(100.0 * event.loaded / event.total));
        }).success(function (data, status, headers, config) {
            console.log(data);
        });
    };

Saya merujuk kepada ini dan isu ini projek github ini

apa yang perlu saya lakukan?

Saya juga ada dua soalan:

  1. Saya boleh terus menyulitkan tandatangan dengan md5 dan menulisnya Adakah terdapat sebarang isu keselamatan jika md5 ini ditulis terus pada klien?
  2. Bolehkah dasar dijana oleh pengekodan base64 dalam js Kerana saya fikir demo rasmi dijana dalam php. Jika ia boleh dijana pada bahagian hadapan, adakah penulisan proses ini di bahagian hadapan juga akan menyebabkan isu keselamatan?
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(4)
世界只因有你

Merujuk isu ini
Selagi isu keselamatan tandatangan diselesaikan, fail boleh dimuat naik dengan jayanya. Terima kasih semua.

Penyelesaian:

  • Alih keluar pengepala
  • Alih keluar formDataAppender
为情所困

hai Biar saya jawab dua soalan anda yang seterusnya dahulu:

    Tandatangan
  • tandatangan termasuk form_api_secret, jadi jika anda menulisnya terus di bahagian hadapan, memang akan ada isu keselamatan: jika orang lain mendapat form_api_secret anda, mereka boleh menulis borang mereka sendiri dan menyerahkan fail ke ruang anda dan menggunakan trafik anda.

  • dasar boleh dijana pada bahagian hadapan menggunakan base64. Walaupun dasar ialah kandungan parameter pengekodan dan tiada isu keselamatan, tetapi disebabkan $signature = md5($policy.'&'.$form_api_secret);, isu keselamatan yang disebutkan di atas masih akan berlaku.

Mengenai soalan kod, @PenaFong telah dijemput untuk menjawabnya.

Ty80

Tandatangan dijana dengan meminta bahagian belakang seperti yang diperlukan, dan form_api_secret akan didedahkan apabila dikira pada bahagian hadapan

给我你的怀抱

http://stackoverflow.com/questions/24443246/angularjs-how-to-upload-multipart-form-data-and-a-file
http://uncorkedstudios.com/blog/multipartformdata-file -muat naik-dengan-angularjs

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan