2013-02-12 34 views
15

Tôi có một plugin webDav CORS, mà tôi có thể sử dụng cho các tệp POST/PUT/GET/REMOVE/ALLDOCS trên máy chủ webDav.Cú pháp để thực hiện XMLHTTPREQUEST miền chéo với máy chủ FTP là gì?

Tôi bây giờ muốn làm tương tự cho FTP, nhưng tôi đang cố gắng để có được xmlhttprequest -syntax để hoạt động (Tôi chỉ gặp lỗi 0).

Trang này trên Mozilla cho biết cũng có thể sử dụng xmlhttprequests cho tệp và ftp, nhưng tôi không thể tìm thấy ví dụ hoặc hướng dẫn làm việc ở bất cứ đâu.

Đây là những gì tôi đang cố gắng, mà trả về access to restricted URI denied

function reqListener() { 
    console.log(this.responseText); 
} 

var oReq = new XMLHttpRequest(); 
oReq.onload = reqListener; 
oReq.open("GET", "ftp://<username>:<passeword>@mydomain.de/folder/test.txt", true); 
oReq.send(); 

Tôi cũng đã cố gắng yêu cầu Ajax thường xuyên

$.ajax({ 
    url: "ftp://sharedspace.domain.provider.com/folder/test.txt", 
    type: "GET", 
    async: true, 
    dataType: "text", 
    crossdomain : true, 
    headers : { 
    user: "<username>", 
    password: "<password>" 
    }, 
    success: function(e){ 
    console.log("success"); 
    console.log(e); 
    }, 
    error: function(e){ 
    console.log("error"); 
    console.log(e); 
    }, 
}); 

mà cũng không làm việc, trở về 0 mã trạng thái.

Câu hỏi:
là gì cú pháp chính xác để làm một cross-domain XMLHTTPREQUEST cho FTP.

Cảm ơn!

EDIT:
Các liên kết hữu ích duy nhất tôi thấy là trang này here, nhưng nó chỉ là bit và mẩu thông tin và tôi không thể lúng túng chúng lại với nhau.

EDIT
lẽ cũng hữu ích link

+0

Xem http://stackoverflow.com/questions/5774497/does-anyone-know-of-a-jquery-ftp-browser-plugin –

+0

Liệu CORS hỗ trợ FTP ở tất cả? – Bergi

+0

không chắc chắn ở tất cả, nhưng tò mò muốn biết nếu nó có thể. – frequent

Trả lời

-4

Tôi không hoàn toàn chắc chắn tôi là một chút chặt chẽ về thời gian nhưng tôi nghĩ bạn có thể thay đổi các tập tin mở rộng php và thêm dòng mã này:

header('Access-Control-Allow-Origin: *'); 

Sau đó, tôi chỉ có thể thay đổi loại mime như thế này:

header('Content-type: text/plain'); 

Tiêu đề "Kiểm soát truy cập" sẽ cho phép tập lệnh và các tệp khác truy cập tệp được yêu cầu từ bất kỳ miền nào. Ngoài ra, bạn có thể đặt danh sách các tên miền ổn định thay vào đó nếu bạn muốn giới hạn quyền truy cập. Tiêu đề "loại nội dung" sẽ cho phép tệp được đọc dưới dạng văn bản thuần túy thay vì php ở đó bằng cách phản ánh hành vi của tệp văn bản và người dùng của bạn sẽ không bao giờ biết

+0

điều này là khó khăn. Cố gắng. Ý tưởng hay :-) – frequent

+0

xin lỗi. không hoạt động. Tôi đăng một tiền thưởng cho câu hỏi – frequent

+6

Tất nhiên nó không hoạt động. Máy chủ FTP không thể thực thi PHP. –

15

Mặc dù tài liệu Mozilla MDN tham chiếu tệp hỗ trợ xmlHttpRequest và ftp không có tệp nào các trình duyệt chính làm AFAIK. Đó là một trong những lý do tại sao bạn cần phải phục vụ các dự án web của bạn từ một số loại máy chủ, ngay cả khi nó trên cùng một máy, nếu bạn muốn phát triển/kiểm tra bất kỳ công cụ xmlHttpRequest nào kể từ file:// không hoạt động.

Microsoft nêu rõ rằng IE only supports http/https. Thông số W3C cho nó cũng nói rằng the spec is only for HTTP/HTTPS nhưng 'một số triển khai hỗ trợ các giao thức ngoài HTTP và HTTPS, nhưng chức năng đó không thuộc phạm vi điều chỉnh của đặc điểm kỹ thuật này'.

Đối với CORS, tính năng này chỉ dành riêng cho HTTP/HTTPS. Thông số kỹ thuật là tất cả về cách sử dụng tiêu đề HTTP. Xem thông số W3C here.FTP không có bất kỳ loại tiêu đề tương đương nào như HTTP.

+0

ok. Cảm ơn bạn về thông tin. Tôi đã đăng liên kết tốt nhất mà tôi có thể tìm thấy về cách hoàn thành nó, vì vậy vẫn giữ ngón tay vượt qua có thể. – frequent

+0

@frequent Chúc may mắn. Khá chắc chắn nó không phải là không thể mà không có một số máy chủ HTTP trung gian ủy quyền các yêu cầu FTP. Nếu nó hoạt động, có vẻ như nó sẽ chỉ có trong Firefox. – pseudosavant

+0

@frequent Tôi đoán tôi đã không nhận được tiền thưởng? – pseudosavant

1
oReq.open("PUT", "ftp://`<username`>:`<password`>@mydomain.de/folder/test.txt", true); 

req.setRequestHeader('Content-Type', "text/plain"); 

req.send("Content of test.txt. This will be in test.txt"); 
+0

ok. Tôi sẽ cố gắng tối nay. Cảm ơn! – frequent

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