2015-11-17 45 views
5

我無法用CasperJS下載從Web服務器的文件流:下載一個文件跨網域CasperJS

  • 形式張貼到一個URL
  • URL返回一個文件流

到目前爲止,我已驗證是否發佈了正確的表單值。

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug', 
    viewportSize: {width: 1440, height: 800}, 
    pageSettings: { 
     userName: '****', 
     password: '****', 
     webSecurityEnabled: false 
    }, 
    waitTimeout: 200000 
}); 

casper.start("***"); 

casper.then(function() { 
    var exportForm = this.evaluate(function() { 
     return $("#export_pdf_form").serialize(); 
    }); 

    var exportAction = this.evaluate(function() { 
     return $("#export_pdf_form").attr('action'); 
    }); 

    var url, file; 
    url = '***' + exportAction; (eg. https://webserver/export) 
    file = "export.pdf"; 
    casper.page.settings.webSecurityEnabled = false; 
    casper.download(url, fs.workingDirectory + '/' + file, "POST", exportForm); 
}); 

卡斯帕錯誤「不幸的是casperjs不能讓跨域Ajax請求」,其次是「XMLHttpRequest的異常101」。搜索後指出,將Web安全變量設置爲false應該可以實現這個功能......但事實並非如此。還有什麼我應該看看?

casperjs - V1.1.1 phantomjs - V2.0.0

+0

面對同樣的問題,你最終得到一個解決方法? webSecurityEnabled也不適用於我。 – Sam

+1

@Sam nope暫時放棄了 –

+1

@Sam我終於得到了這個工作...通過更新到PhantomJS 2.1 –

回答

0

事實證明沒有什麼是錯我的代碼,只需更新PhantomJS從2.0.0到2.1.1已經解決了這個問題。

0

替代答案:您可以通過您的網站通過API接口實現代理。警告:最好只使用您控制的資源,因爲它需要您的網站負責內容,並且如果您允許惡意軟件或不安全的內容,可能會危及您的證書。