Каков синтаксис для междоменного XMLHTTPREQUEST на FTP-сервере?
У меня есть плагин webDav CORS, который я могу использовать для файлов POST/PUT/GET/REMOVE/ALLDOCS на сервере webDav.
Теперь я хочу сделать то же самое для FTP, но я изо всех сил пытаюсь заставить xmlhttprequest
-syntax работать (я просто получаю ошибку 0
).
На этой странице Mozilla можно использовать xmlhttprequests
для файла и ftp, но я не могу найти рабочий пример или учебник в любом месте.
Это то, что я пытаюсь, который возвращает 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();
Я также попробовал обычный запрос Ajax
$.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);
},
});
который также не работает, возвращая 0
код состояния.
Вопрос:
Каков правильный синтаксис для кросс-домена xmlhttprequest
для FTP
.
Спасибо!
EDIT:
Единственная полезная ссылка, которую я нашел, - это страница здесь, но это просто кусочки информации, и я не мог их разгадать.
ИЗМЕНИТЬ
Возможно также полезная ссылка
Ответы
Ответ 1
Несмотря на то, что документы MDLS в Mozilla ссылаются на поддерживающий файл xmlHttpRequest и ftp, ни один из основных браузеров не делает AFAIK. Это одна из причин, почему вам нужно обслуживать веб-проекты с какого-то сервера, даже если он находится на одной машине, если вы хотите разработать/протестировать любой материал xmlHttpRequest, поскольку file://
не работает.
Microsoft конкретно заявляет, что IE поддерживает только http/https. Спецификация W3C для него также говорит о том, что спецификация предназначена только для HTTP/HTTPS, но что "некоторые реализации поддерживают протоколы в дополнение к HTTP и HTTPS, но эта функциональность не распространяется по этой спецификации".
Что касается CORS, это специально для HTTP/HTTPS. Спецификация касается использования HTTP-заголовков. См. Здесь спецификацию W3C . FTP не имеет эквивалентного типа заголовка как HTTP.
Ответ 2
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");
Ответ 3
Я не совсем уверен, что я немного напряжен вовремя, но я думаю, что вы можете изменить расширение файлов на php и добавить эту строку кода:
header('Access-Control-Allow-Origin: *');
Затем я просто изменил бы тип mime следующим образом:
header('Content-type: text/plain');
Заголовок "Контроль доступа" позволит скриптам и другим файлам обращаться к запрашиваемому файлу из любого домена. Кроме того, вместо того, чтобы ограничить доступ, вы можете поместить список правильных доменов. Заголовок "тип контента" позволяет читать файл как обычный текст вместо php, зеркалируя поведение текстовых файлов, и ваши пользователи никогда не узнают