又拍云存储 - 我能通过Angular.JS来使用表单提交API吗
高洛峰
高洛峰 2017-05-15 16:49:07
0
4
602

现有的业务完全使用了前端Angular.JS的单页应用,所有请求均通过ajax发出。

现在我想实现在客户端直接向又拍云上传文件,尝试了angular file upload,但是提交的结果是

400: not accept, miss signature

抓包得知,policy和signature的表单数据根本没有提交。
我是这样写的:

$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); }); };

我参考了这个github项目的这个和这个issues

what should I do?

我同时还有两个疑问:

  1. signature我可以直接md5加密好写上,这个md5直接写在客户端是否有安全问题?
  2. policy能不能在js中base64编码生成,因为我看官方给的demo是在php内生成的。如果可以在前端生成,把这个过程写在前端是否也会引发安全问题?
高洛峰
高洛峰

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

全員に返信 (4)
世界只因有你

この問題を参照しました
署名のセキュリティ問題が解決されていれば、ファイルは正常にアップロードできます。ありがとうございます。

解決策:

  • ヘッダーを削除する
  • formDataAppenderを削除
いいねを押す+0
    为情所困

    こんにちは、まず次の 2 つの質問に答えさせてください:

    • signature の署名にはform_api_secretが含まれているため、フロントエンドに直接記述すると確かにセキュリティ上の問題が発生します。他の人がform_api_secretを取得した場合、自分自身でそれを記述することができます。フォームはファイルをスペースに送信し、トラフィックを使用します。form_api_secret的,所以若在前端直接写时,确实会存在安全问题:其他人拿到你的form_api_secret,就可以自己编写表单把文件提交到你的空间,并使用你的流量了。

    • policy 能使用 base64 在前端生成。虽然 policy 是 encode 参数内容,不存在安全问题,但因为$signature = md5($policy.'&'.$form_api_secret);

    ポリシーはbase64を使用してフロントエンドで生成できます。ポリシーはエンコード パラメータの内容であり、セキュリティ上の問題はありませんが、 $signature = md5($policy.'&'.$form_api_secret);であるため、前述のセキュリティ上の問題が依然として残ります。その上。

    コードの質問に関しては、@PenaFong が回答するよう招待されています。
    いいねを押す+0
      Ty80

      署名は必要に応じてバックエンドにリクエストすることで生成され、form_api_secret

      はフロントエンドで計算されるときに公開されます。
      いいねを押す+0
        给我你的怀抱

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

        いいねを押す+0
          最新のダウンロード
          詳細>
          ウェブエフェクト
          公式サイト
          サイト素材
          フロントエンドテンプレート
          私たちについて 免責事項 Sitemap
          PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!