繁体   English   中英

WinJS xhr可以发出HTTPS请求吗?

[英]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 )包装XMLHttpRequesthttps://msdn.microsoft.com/zh-cn/library/windows/apps/br229787.aspx )类似)。

XMLHttpRequest具有withCredentials属性,该属性允许您指定是否发送客户端凭据(包括客户端证书)-但是没有API允许您指定应使用哪个特定的客户端证书。

幸运的是,WinJS公开了Windows.Web.Http.HttpClient类型,该类型使您可以更好地控制客户端身份验证,包括客户端证书-但您的UWP应用程序必须具有“企业功能”才能使用用户的“ My证书”存储区-否则为非企业UWP应用程序仅在其应用程序证书库中具有证书:

https://blogs.windows.com/buildingapps/2015/11/23/demystifying-httpclient-apis-in-the-universal-windows-platform/#Dr3C9IMHv5pTPOrB.97

您必须先按照以下说明将其添加到应用程序的证书存储中。 具有企业功能的应用程序还可以使用用户的“我的”商店中的现有客户端证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM