2015-11-17 6 views
5

Ich bin nicht in der Lage, einen Datei-Stream von einem Web-Server mit CasperJS zum Download:eine Datei Cross-Domain in CasperJS

  • eine Form einer URL veröffentlicht wird
  • url gibt eine Datei-Stream

Bisher habe ich validiert, dass die richtigen Formularwerte gebucht werden.

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

Casper Fehler durch "XMLHttpRequest Exception 101" gefolgt "Leider kann casperjs nicht Cross-Domain-AJAX-Anfragen machen". Nach der Suche heißt es, dass die Einstellung der Web-Sicherheitsvariable auf false das funktionieren soll ... aber das tut es nicht. Sonst noch etwas, auf das ich schauen sollte?

casperjs - v1.1.1 PhantomJS - v2.0.0

+0

Mit dem gleichen Problem konfrontiert, haben Sie endlich einen Workaround? webSecurityEnabled funktioniert auch nicht für mich. – Sam

+1

@Sam Nope gab vorerst auf –

+1

@Sam Ich habe endlich das funktioniert ... indem ich nur auf PhantomJS 2.1 updaten –

Antwort

0

nichts mit meinem Code falsch Es stellte sich heraus, einfach PhantomJS von 2.0.0 bis 2.1.1 ist gelöst, das Problem zu aktualisieren.

0

Alternative Antwort: Sie können einen Proxy über eine API-Schnittstelle über Ihre Site implementieren. Vorbehalt: Am besten nur mit von Ihnen kontrollierten Ressourcen, da Ihre Website für den Inhalt verantwortlich sein muss und Ihr Zertifikat gefährdet sein könnte, wenn Sie Malware oder unsicheren Inhalt zulassen.

-1

Es gibt eine Menge von AJAX Cross-Domain und selbsterzeugten Sicherheitsrichtlinien Material dort geschrieben, werfen Sie einen Blick. Soweit ich weiß, gibt es nur zwei Alternativen zu der vorgeschlagenen John (Einrichten eines Proxy auf der Serverseite):

1. Verwendung von W3C CORS Standardtechnik und HTTP-Header.

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

2. JSONP Mechanismus.

https://en.wikipedia.org/wiki/JSONP

ich nicht wirklich wissen, ob es das eigentliche Problem ist, dass Sie erleben, aber ich hoffe, dass dies für Sie eine gute Hilfe.