Итак, я столкнулся со всеми видами CORS
ошибок (при использовании HTTPS) и Not allowed to load local resource: file:///C:/Windows/TEMP/e3ef26_75603_4.xml
при сохранении моего файла во временную папку и последующей попытке обработать запрос через AJAX для отображения на моем браузер.
В основном сценарий таков, что я запрашиваю файл из S3
корзины. Теперь я попробовал пару вещей:
Путем прямого указания полного пути к файлу (HTTPS) с соответствующим сегментом и именем файла для вызова AJAX
. Для этого сначала нужно сгенерировать путь к файлу в методе Controller
и назначить переменную ViewBag
. Примерно так:
ViewBag.currentURL = JsonConvert.SerializeObject(tempfilepath);
И связанный AJAX:
$(function executeXML() {
//console.log('@Html.Raw(ViewBag.currentURL)');
$("#myeditor").execute({
ajaxOptions: {
pathtoxml: @Html.Raw(ViewBag.currentURL)
},
});
});
Этот метод работает очень хорошо, когда корзина S3
имеет доступ publi c и политики CORS
существуют для корзины.
Проблема: при использовании этого метода в корзине S3
, у которой нет доступа publi c и политики CORS
, вы не получите No 'Access-Control-Allow-Origin' header is present on the requested resource
из любого браузера.
Вздох! Но пока нет,
Второй метод, который я пытался сделать, - это прочитать файл на стороне сервера и сохранить его в XML документе. Теперь, когда я хочу сохранить этот XML документ, я использую временную папку для сохранения моего файла. Примерно так:
using (WebClient client = new WebClient())
{
string myXMLString = client.DownloadString(fullpathstory);
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXMLString); // suppose that myXmlString contains "<Names>...</Names>"
//Now save the file to temp folder
tempfilepath = Path.Combine(Path.GetTempPath(), filename);
xml.Save(tempfilepath);
}
Это дает мне путь вроде: file:///C:/Windows/TEMP/e3ef26_75603_4.xml
Теперь, когда я отправляю этот путь на мой AJAX
, он дает мне ошибку jquery.min.js:4 Not allowed to load local resource: file:///C:/Windows/TEMP/e3ef26_75603_4.xml
что вполне очевидно и ожидаемо.
Вопрос: я ищу способ сохранить мой XML документ в памяти и сгенерировать путь или поток, который может быть прочитан моим вызовом AJAX
и обслуживанием это в браузере.
Есть ли такой способ или мне нужно создать правильный файл-сервер, где я храню все мои сгенерированные XML
файлы и затем читаю из этого места. В основном это будет папка временного сервера, но тогда мне нужно будет следить за постоянно увеличивающимся размером.
Заранее спасибо