2016-04-01 10 views
0

テキストとファイルフィールドを持つフォームをjquery ajaxとFormDataで送信しようとしています。 Chrome上でうまく動作していますが、Firefox 45.0.1とSafari 9.1で400回の不正リクエストを受け取りました。 Firefox 44でうまくいきましたが、45.0.1に更新した後に問題が発生しました。私はキャッシュ、クッキー、履歴などすべてをクリアしましたが、まだ動作していません。私のリクエストとレスポンスヘッダが、私はこの問題を解決してきた enter image description here400 Firefox 45.0.1とSafari 9.1のリクエストが正しくありません

答えて

0

どのように見えるかだ

var formData = new FormData($(form)[0]); 
$.ajax({ 
    type: 'POST', 
    url: '/api/slab/post/', 
    data: formData, 
    cache: false, 
    contentType: false, 
    processData: false, 
    beforeSend: function (request) { 
     $(".loader, .main-loader-overlay").fadeIn("slow"); 
    } 
}); 

。 FirefoxとSafariは、File Fieldの属性が空の場合はfilenameという属性を送信しません。 下の画像で、フィールド名 "post_photo"に属性ファイル名がないことが明確に分かります。 enter image description here

私はバックエンドでPython Flaskを使用していますが、フォームから何かが欠けていると、400 Bad Requestがスローされます。 それは、それが空であっても、ファイルフィールドのfilename属性を送信するため、クロムで作業していた唯一の理由でした。 enter image description here

この問題を解決するには、このis_file_available = len(request.files.keys()) > 0をバックエンドで使用しました。

関連する問題