我在Windows Server2012 R2和IIS 8.5中使用Active Directory为每个用户创建一个WebDav,可以通过用户名和用户密码访问它。 每个用户一个文件夹。 这完全适用于WebDav客户端。 我还有一个使用ithit-ajax-file-browser的网络浏览器。
我的问题是,当我将参数设置到网络部分时,服务器会在自动登录之前显示一个身份验证弹出窗口。
我正在使用
var settings = {
BasePath: '/davbrowser/',
Id: 'AjaxFileBrowserContainer',
Url: webDavServerPath,
Style: 'height: 100%; width: 100%',
MsOfficeTemplatesPath: '/templates/',
SelectedFolder: webDavServerPath,
ThemeName: 'windows_8',
IconsSize: 16
//Platform: 'mobile'
};
var ajaxFileBrowser = new ITHit.WebDAV.Client.AjaxFileBrowser.Controller(settings);
ajaxFileBrowser.GetSession().SetCredentials('username', 'password');
ajaxFileBrowser.SetSelectedFolder('/username');
`
自动登录有效,但仍会显示登录弹出窗口。 有没有解决方案可以删除它? 我使用基本身份验证
答案 0 :(得分:3)
解
我正在使用基本身份验证,我需要在标头中发送用户名和密码。 我不能用这个表格。用户名:密码@文件服务器/ userfolder 此方法仅适用于Firefox。这是一个问题chromium issue 所以解决方案是使用XMLHttpRequest。
webDavServerPath = 'fileserver/userfolder';
var xml = new XMLHttpRequest();
xml.open('GET',webDavServerPath,false,username,password)
xml.send('');
这在大多数浏览器中都可以正常使用,必须在SSL下使用。
答案 1 :(得分:1)
在您的代码中,在设置中,您要设置SelectedFolder参数。这会导致在调用SetCredentials之前发送请求。删除SelectedFolder设置并仅调用SetSelectedFolder,它执行相同的操作,但在调用SetCredentials之后。
我还建议更新您的代码以使用IT命中Ajax文件浏览器v2.1.0.1483中引入的异步方法:
var settings = {
BasePath: '/davbrowser/',
Id: 'AjaxFileBrowserContainer',
Url: webDavServerPath,
Style: 'height: 100%; width: 100%',
MsOfficeTemplatesPath: '/templates/',
//SelectedFolder: webDavServerPath,
ThemeName: 'windows_8',
IconsSize: 16
//Platform: 'mobile'
};
var ajaxFileBrowserLoader = new ITHit.WebDAV.Client.AjaxFileBrowserLoader(settings);
ajaxFileBrowserLoader.oninit = function(ajaxFileBrowser) {
// This event is fired when control is loaded and created.
ajaxFileBrowser.GetSession().SetCredentials('username', 'password');
ajaxFileBrowser.SetSelectedFolder('/username');
};
ajaxFileBrowserLoader.LoadAsync();
另一件可能导致标准Web浏览器登录对话框的是CORS请求。这是因为您的settings.Url参数包含位于另一个源(域,端口或协议)的WebDAV服务器URL。不幸的是,这种情况没有任何真正的解决方案。唯一的解决方法是将带有Ajax文件浏览器的页面放在WebDAV服务器所在的同一服务器上。您可以找到有关它的更多信息here。