2013-12-20 33 views
1

這裏是我的代碼上傳圖像,它工作正常,如果我給的形式行動同一個服務器dropzone.js圖片上傳到不同的服務器(跨域)

如果我給行動不同的服務器

不工作

HTML:

<div id="dropzone"> 
           <form action="http://localhost:8080/stardom/api/v1/image" class="dropzone"> 
            <input type="hidden" name="album_id" value="" id="album_id" /> 
            <div class="fallback"> 
             <input name="file" type="file" multiple="" /> 
            </div> 
           </form> 
          </div> 

JS:

$(".dropzone").dropzone({ 
       paramName: "file", // The name that will be used to transfer the file 
       maxFilesize: 2, // MB 
       acceptedMimeTypes : 'image/*', 
       addRemoveLinks : false, 
       dictDefaultMessage : 
       '<span class="bigger-150 bolder"><i class="icon-caret-right red"></i> Drop files</span> to upload \ 
       <span class="smaller-80 grey">(or click)</span> <br /> \ 
       <i class="upload-icon icon-cloud-upload blue icon-3x"></i>' 
      , 
       dictResponseError: 'Error while uploading file!', 

       //change the previewTemplate to use Bootstrap progress bars 
       previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-details\">\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n <div class=\"dz-size\" data-dz-size></div>\n <img data-dz-thumbnail />\n </div>\n <div class=\"progress progress-small progress-success progress-striped active\"><span class=\"bar\" data-dz-uploadprogress></span></div>\n <div class=\"dz-success-mark\"><span></span></div>\n <div class=\"dz-error-mark\"><span></span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</div>", 
       complete : function(){ 

        if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) { 
         loadImages(); 
        } 

       } 
       }); 

問:我怎樣才能讓dropzone.js上傳文件到不同的服務器?

回答

0

我用這個代碼,它的工作。

//CORS middleware 
var allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, Cache-Control, Accept, Origin, X-Session-ID'); 
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,TRACE,COPY,LOCK,MKCOL,MOVE,PROPFIND,PROPPATCH,UNLOCK,REPORT,MKACTIVITY,CHECKOUT,MERGE,M-SEARCH,NOTIFY,SUBSCRIBE,UNSUBSCRIBE,PATCH'); 
    res.header('Access-Control-Allow-Credentials', 'false'); 
    res.header('Access-Control-Max-Age', '1000'); 

    next(); 
} 
server.use(allowCrossDomain); 
0

如果你打算做任何事情,其中​​ServerA將服務內容提供給瀏覽器,而瀏覽器想要轉發信息並將信息發送給ServerB,並且你通過javascript/ajax執行此操作,則需要告訴接收ServerB它應該接受來自服務器的數據帖子。通常這是通過使用 Access-Control-Allow-Origin「*」 在您的.htaccess文件中完成的。

我有一些這方面的經驗,但不是一噸。我已經在內部平臺應用程序中使用它,我們不需要擔心XSS。希望有所幫助。對不起,這麼晚了。

+0

我正在使用節點,在我的代碼中已經有'Access-Control-Allow-Origin'*「',但我已經有了解決方案,我將它更新爲答案 –