gpt4 book ai didi

javascript - WinJS xhr可以发出HTTPS请求吗?

转载 作者:行者123 更新时间:2023-12-03 04:38:23 25 4
gpt4 key购买 nike

例如,它需要调用使用 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 的接口(interface)(WinJS Promise)包装 XMLHttpRequest( https://msdn.microsoft.com/en-us/library/windows/apps/br229787.aspx ) >,不是 ES6 Promise,但概念相似)。

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

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

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

You must first add it to the app’s certificate store by following these instructions. Apps with enterprise capability can also use existing client certificates in the user’s ‘My’ store.

关于javascript - WinJS xhr可以发出HTTPS请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com