[英]Can WinJS xhr make HTTPS request?
例如,它需要调用以SSL托管的Web服务。
如果可以,如何通过客户证书呢?
非常感谢!!
WinJS.xhr({
type: "GET",
url: "https://localhost:442/WebService1.asmx?op=Login",
}).then(function success(res) {
var debug1 = res.responseText + res.responseURL;
}, function error(err) {
var debug2 = err.responseText + err.responseURL;
}, function completed(result) {
if (result.status === 200) {
// do something
}
});
调试点将跳至“ complete(result)”功能,但状态码为“ 0”。 即使我将URL更改为其他https网站(例如https://www.w3.org ),结果也一样。
-------------更新1 ---------------------
如果在C#中,则可以使用以下代码来通过客户端证书。 但是,如果我想将原始WinJs.xhr更改为HttpClient,只是复制和粘贴似乎不起作用,因为.js文件无法理解所有语法?
var certQuery = new CertificateQuery();
var cert = (await CertificateStores.FindAllAsync(certQuery)).FirstOrDefault(c=>c.Issuer.StartsWith("xxxx",StringComparison.CurrentCultureIgnoreCase));
var filter = new HttpBaseProtocolFilter();
if (cert != null)
{
filter.ClientCertificate = cert;
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted | ChainValidationResult.InvalidName);
}
var hc = new Windows.Web.Http.HttpClient(filter);
var uri = new Windows.Foundation.Uri(url);
hc.getStringAsync(uri).done({.......});
例如
1)如何在JS文件中写“ Using ....”?
2)如何在此行中使用“ await”或“'FindAllAsync'”? 等等
var cert = (await CertificateStores.FindAllAsync(certQuery)).FirstOrDefault(c=>c.Issuer.StartsWith("xxxx",StringComparison.CurrentCultureIgnoreCase));
WinJS.xhr
Promise
的界面(WinJS Promise
而非ES6 Promise
)包装XMLHttpRequest
( https://msdn.microsoft.com/zh-cn/library/windows/apps/br229787.aspx )类似)。
XMLHttpRequest
具有withCredentials
属性,该属性允许您指定是否发送客户端凭据(包括客户端证书)-但是没有API允许您指定应使用哪个特定的客户端证书。
幸运的是,WinJS公开了Windows.Web.Http.HttpClient
类型,该类型使您可以更好地控制客户端身份验证,包括客户端证书-但您的UWP应用程序必须具有“企业功能”才能使用用户的“ My
证书”存储区-否则为非企业UWP应用程序仅在其应用程序证书库中具有证书:
您必须先按照以下说明将其添加到应用程序的证书存储中。 具有企业功能的应用程序还可以使用用户的“我的”商店中的现有客户端证书。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.