2015-11-17 20 views
5

Tôi không thể tải về một dòng tập tin từ một máy chủ web bằng CasperJS:Tải về một tập tin tên miền chéo trong CasperJS

  • một hình thức được đưa lên một url
  • url trả về một luồng file

Cho đến nay tôi đã xác thực rằng các giá trị biểu mẫu chính xác được đăng.

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

Lỗi Casper "Rất tiếc, casperj không thể thực hiện yêu cầu ajax miền" tiếp theo "XMLHttpRequest Exception 101". Sau khi tìm kiếm nó nói rằng các thiết lập biến an ninh web thành false sẽ làm cho công việc này ... nhưng nó không. Bất cứ điều gì khác tôi nên xem xét?

casperjs - v1.1.1 phantomjs - v2.0.0

+0

Đối mặt với cùng một vấn đề, cuối cùng bạn có khắc phục được sự cố không? webSecurityEnabled cũng không hoạt động đối với tôi. – Sam

+1

@Sam nope đã từ bỏ thời gian là –

+1

@Sam Cuối cùng tôi cũng đã làm việc này ... bằng cách cập nhật lên PhantomJS 2.1 –

Trả lời

0

Hóa ra không có gì là sai với mã của tôi, chỉ cần cập nhật PhantomJS từ 2.0.0 đến 2.1.1 đã giải quyết vấn đề này.

0

Câu trả lời thay thế: Bạn có thể triển khai proxy, thông qua giao diện API thông qua trang web của bạn. Lưu ý: Chỉ được thực hiện tốt nhất với các tài nguyên mà bạn kiểm soát, vì nó yêu cầu trang web của bạn phải chịu trách nhiệm về nội dung và có thể xâm phạm chứng chỉ của bạn nếu bạn cho phép phần mềm độc hại hoặc nội dung không an toàn.

-1

Có rất nhiều tài liệu chính sách bảo mật có tên miền chéo và nguồn gốc AJAX được viết ở đó, hãy xem. Theo tôi biết, chỉ có hai lựa chọn thay thế cho đề xuất mà John đề xuất (thiết lập proxy ở phía máy chủ):

1. Sử dụng kỹ thuật tiêu chuẩn W3C CORS và tiêu đề HTTP.

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

2. Cơ chế JSONP.

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

Tôi thực sự không biết nếu nó là vấn đề thực sự bạn đang trải qua, nhưng tôi hy vọng đây là sự giúp đỡ tốt cho bạn.

Các vấn đề liên quan