Webdav.Net Ajax File Browser: не удается подключиться к серверу webdav в FireFox 20.0.1
Я использую приведенный ниже код для отображения элемента управления обозревателем файлов ajax в проекте веб-приложения.Net, который я запускаю локально, используя веб-сервер разработки на автоматически назначенном порту.
Сервер webdav работает локально на IIS 7 (порт 80), это приложение.net, использующее библиотеку сервера webdav.net. Безопасность в приложении установлена Windows Authentication. Я также разрешаю анонимным пользователям запрос OPTIONS.
Страница отлично работает в IE & Chrome, однако FireFox не подключается, он возвращает сообщение: Местоположение ".../WebDav/" не найдено.
Я включил Firebug, и проблема в том, что сервер Webdav возвращает 401 Unauthorized на запрос OPTIONS.
Есть ли что-нибудь, что можно сделать, чтобы оно работало и в FireFox?
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE HTML>
<html>
<head>
<title>IT Hit AJAX File Browser</title>
<!-- Always set width and height for html and body if you would like to set width and height for Ajax File Browser control to 100% -->
<style type="text/css">
@import "AjaxFileBrowser/themes/ih_vista/include.css";
html, body {margin: 0px; padding: 0px; width: 100%; height: 100%;}
</style>
<script src="AjaxFileBrowser/ITHitAJAXFileBrowser.js" type="text/javascript"></script>
<script type="text/javascript">
function InitAjaxFileBrowser() {
// Here we assume that your server is located on site root (http://server/) on the domain from which this page is loaded.
// If your WebDAV server is located on a different domain or on a different port the server must attach the Access-Control-Allow headers to server responses.
var port = window.location.port == '' ? '' : ':' + window.location.port;
var webDavServerPath = window.location.protocol + '//' + window.location.hostname + port;
webDavServerPath = "http://localhost/WebDav";
// Create the AJAX File Browser Settings object.
var settings = {
Id: 'AjaxFileBrowserContainer', // (required) ID of the HTML control in which Ajax File Browser will be created
Url: webDavServerPath, // (required) the root folder to be displyed in Ajax File browser
Style: 'height: 100%; width: 100%', // (required) always provide size of the control
FileIconsPath: '/TestWebDavAjaxFileBrowser/AjaxFileBrowser/icons/', // (required) path to the folder where file icons are located
MsOfficeTemplatesPath: webDavServerPath + '/', // path to MS Office templates, always specify full path
SelectedFolder: webDavServerPath, // folder to be selected, same as SetSelectedFolder call
PluginsPath: '/TestWebDavAjaxFileBrowser/AjaxFileBrowser/plugins/' // path to Java applet that opens documents directly from server
};
//Create control.
var ajaxFileBrowser = new ITHit.WebDAV.Client.AjaxFileBrowser.Controller(settings);
}
</script>
</head>
<body class="ih_vista" onload="InitAjaxFileBrowser();">
<div id="AjaxFileBrowserContainer" style="width: 100%; height: 100%"></div>
</body>
</html>
Спасибо
Обновление 1:
Я попробовал решение, изложенное для Safari здесь: http://www.webdavsystem.com/ajaxfilebrowser/programming/authentication_ssl, однако оно не работает (ни Safari, ни FireFox). Мне предлагается пароль, но запрос параметров по-прежнему не авторизован.
Я также включил проверку подлинности NTLM в свойствах проекта.Net - вкладка Web. Все еще не работает запрос OPTIONS возвращается как несанкционированный.
Обновление 2:
Я работал в FireFox, когда запускаю клиентское приложение.Net в IIS, а не веб-сервер разработки (клиентское веб-приложение.Net и сервер webdav работают локально в IIS на порту 80). Когда я запускаю его в IIS, FireFox работает, но не Safari. Safari постоянно запрашивает у меня пароль. Мне все еще любопытно посмотреть, есть ли решение при запуске клиентского приложения на локальном веб-сервере разработки.
1 ответ
Попробуйте использовать это в web.config:
<authorization>
<!--
To support Windows Shell (Miniredirector/Web Folders) on XP and Server 2003 as well as Firefox CORS requests, OPTIONS must be
processed without authentication. To enable authentication of OPTIONS request, remove "allow OPTIONS" from the list below.
-->
<allow users="*" verbs="OPTIONS"/>
<deny users="?"/>
<allow users="*"/>
</authorization>