ITHitWebDav 服务器使用 IIS Windows 身份验证。
像这样设置:https ://www.webdavsystem.com/server/server_examples/iis/configuring_windows_authentication/
服务器组件位于 URL:https ://webdav.contoso.com (示例)
客户端应用程序使用 ITHit Ajax 库从另一个网站调用服务器。客户端网站位于:https ://client.contoso.com (与服务器网站相同的域 DNS)。
两个网站都托管在同一台机器上,同一台 IIS 服务器(托管在 Windows Server 2016 上)。Windows 身份验证针对名为 contosointernal.com 的域
客户端网站上的 Javascript 代码:
function testOpenWebDAV(sFolderUrl) {
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = sFolderUrl;
var fCallback = function () { };
webDavSession.OpenFolder(sFolderAbsolutePath);
}
错误:
ITHitWebDAVClient.js:7 Access to XMLHttpRequest at 'https://webdav.contoso.com/' from origin 'https://client.contoso.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
ITHit.Add._46.Send @ ITHitWebDAVClient.js:7
ITHitWebDAVClient.js:7 Failed to load resource: net::ERR_FAILED
ITHit.Add._46.Send @ ITHitWebDAVClient.js:7
ITHitWebDAVClient.js:87 Uncaught _f7
从提琴手的问题是对服务器的 PROPFIND 请求。PROPFIND 不发送身份验证标头。
Per: : https://www.webdavsystem.com/ajax/programming/cross_origin_requests/ .NET 服务器添加了所有必要的 CORS 标头。我不需要手动添加它们。