问题标签 [winhttp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1855 浏览

http - Win32:WinHttpReadData 中分块编码支持的状态如何?

WinHttpReadData的文档说,关于HTTP 的分块传输编码

从 Windows Vista 和 Windows Server 2008 开始,WinHttp 使应用程序能够对发送到服务器的数据执行分块传输编码。当 WinHttp 响应中存在 Transfer-Encoding 标头时,WinHttpReadData 在将数据提供给应用程序之前会剥离分块信息。

谁能破译这个?


Q1首先,此文本在 WinHttpReadData 页面上,用于...读取HTTP 客户端应用程序中的数据,特别是响应数据。所以当它说是什么意思

从 Windows Vista 和 Windows Server 2008 开始,WinHttp 使应用程序能够对发送到服务器的数据执行分块传输编码。

WinHttpReadData 函数不与发送到服务器的数据一起使用。服务器读取数据时使用它。

查阅WinHttpWriteData函数的文档,该函数用于数据作为 HTTP 请求的一部分发送到服务器,没有提到分块传输功能。


Q2假设我知道新的分块传输支持是多少,我如何获得这种支持? 它说它是 Vista 和 WS2008 上的新功能。如果我编写一个在 WS2003 上运行并使用 WinHttpReadData 的应用程序遇到分块响应或 WinHttpWriteData,并且它想要发送分块请求,会发生什么情况?

字里行间,这个文档是否说我需要链接到 Vista 时代的 Windows SDK 或更高版本中的 WinHttp.lib 才能获得进行分块编码的能力?或者在 WS2003 上真的不可能吗?换句话说,使用这个库进行分块传输的应用程序必须在指定的操作系统上运行?


这可能读起来像咆哮,但事实并非如此。我真的很想知道。

0 投票
1 回答
11184 浏览

c++ - winHTTP GET 请求 C++

我会直入主题。

  • 这是浏览器请求的样子

    获取 /index.html HTTP/1.1

  • 这就是 winHTTP 所做的

    获取http://site.com/index.html HTTP/1.1

有没有我可以让 winHTTP 请求与常规请求格式相同?如果有任何区别,我正在使用 VC++ 2008

0 投票
1 回答
1679 浏览

c++ - HttpAddUrl 权限

我正在尝试在 Windows Server 2008 机器上运行基于 WinHTTP 的自定义 Web 服务器。

我将“http://*:22222/”传递给 HttpAddUrl

当我以管理员或 LocalSystem 身份启动可执行文件时,一切正常。但是,如果我尝试将其作为 NetworkService 运行以最大程度地降低安全风险(因为应用程序没有正当理由使用管理员权限),则功能将失败并显示“拒绝访问”错误代码。

我不知道 NetworkService 对它可以监听的端口和接口有任何限制。

有没有办法以这种方式配置权限,以便我实际上可以在 NetworkService 帐户下运行应用程序并从其他互联网主机连接到它?

0 投票
8 回答
184547 浏览

asp.net - 如何让 ASP.NET 访问证书存储中证书中的私钥?

我有一个 ASP.NET 应用程序,它可以访问证书存储中证书中的私钥。在 Windows Server 2003 上,我能够使用 winhttpcertcfg.exe 授予对 NETWORK SERVICE 帐户的私钥访问权限。如何在 IIS 7.5 网站的 Windows Server 2008 R2 上授予访问证书存储(本地计算机\个人)中证书中的私钥的权限?

我已经尝试为“Everyone”、“IIS AppPool\DefaultAppPool”、“IIS_IUSRS”以及我可以使用证书 MMC(Server 2008 R2)找到的所有其他安全帐户授予完全信任访问权限。但是,下面的代码表明该代码无权访问使用私钥导入的证书的私钥。每次访问私钥属性时,代码都会抛出错误。

默认.aspx

p>

默认.aspx.cs

code>

0 投票
1 回答
3298 浏览

http - 通过 HTTP 从 VBA (WinHTTP) 上传文件

我正在尝试(HTTP)从 VBA 中以编程方式上传二进制文件。我打算在服务器上放一个 ASPX 页面来接受文件和某些附加参数。

我知道有很多很好的方法可以做到这一点(例如使用 Web 服务而不是 aspx),但我的限制是它必须在 VBA 中运行(在 excel 文件中),并且我不能在客户端上安装任何其他组件。

所以我想我会使用 WinHTTP,并且我找到了几个发布表单数据的示例,而不是发布二进制文件。我可能需要对文件内容进行base64?

所以我的问题是:

  • 我需要手动进行编码还是可以让 WinHTTP 这样做?
  • 有没有比 WinHTTP 更好的实用程序?(记住我不想安装任何额外的软件,它必须随 WinXP Pro、Office 2007 或 .NET 框架一起提供,例如)
  • 有没有更好的方法,例如使用 ASP.NET Web 服务?

谢谢,奇科多罗

0 投票
1 回答
9086 浏览

c - 有没有在 Windows 上的 C 中使用 winhttp 的完整示例?

我可以在 C++ 中找到大量示例,但没有任何仅用 C 编写的示例。我正在尝试连接到 http 服务器,下载返回的数据,然后将其保存到文件中。有没有更好的方法在 Windows 上做到这一点?我不应该使用 WinHttp 或 WinInet 吗?互联网上似乎非常缺乏 C 的 Windows 文档。感谢您的帮助。

0 投票
1 回答
912 浏览

winhttp - 在 WinHTTP (c++) 中设置 IP 首选项

我有一个在 Windows 7 上使用 WinHTTP 的代码。

我遇到的问题是,当用户尝试使用 IPv6 地址(已禁用)时,与特定主机名的连接需要很长时间。

我想配置连接(可能是 WinHttpConnect 参数)以首先尝试 IPv4 。

有没有办法设置地址绑定顺序?

0 投票
2 回答
2033 浏览

c++ - Windows C++ 我应该使用 WinHttp 库还是 MSXML 中的 XmlHttp?

一个比较简单的问题。我应该使用WinHttp库在我的 C++ 程序中发出 Web 服务请求,还是应该使用库中的IXmlHttpRequest接口msxml发送 Web 服务请求?显然,与WinHttp库相比,库提供了更精细的控制IXmlHttpRequest。但是XmlHttpRequest对象是w3.org标准的,理论上更便携。

0 投票
0 回答
1125 浏览

c++ - 当第一个 ip 错误时使用 winhttp 连接到多宿主主机

我试图确认这里描述的功能:

http://msdn.microsoft.com/en-us/library/aa384066(VS.85).aspx

WINHTTP_OPTION_CONNECT_RETRIES 设置或检索一个无符号长整数值,该值包含 WinHTTP 尝试连接到主机的次数。Microsoft Windows HTTP 服务 (WinHTTP) 每个 Internet 协议 (IP) 地址仅尝试一次。例如,如果您尝试连接到具有 10 个 IP 地址且 WINHTTP_OPTION_CONNECT_RETRIES 设置为 7 的多宿主主机,则 WinHTTP 仅尝试连接到前七个 IP 地址。给定同一组 10 个 IP 地址,如果 WINHTTP_OPTION_CONNECT_RETRIES 设置为 20,WinHTTP 只尝试这 10 个 IP 地址中的每一个。如果在指定的尝试次数后连接尝试仍然失败,或者在此之前连接超时过期,则取消请求。WINHTTP_OPTION_CONNECT_RETRIES 的默认值为五次尝试。

确实有效。

我的代码是:

一种测试方法是将其放在您的 C:\WINDOWS\system32\drivers\etc\hosts 文件中:

类型

(这应该失败)然后

您应该会看到 google.com 的两条 dns 记录。

如上所述,默认值为 5,这意味着它应该继续尝试第二个 ip,但事实并非如此。我错过了什么?

0 投票
1 回答
777 浏览

windows - WinINET 是可重入的吗?

我看到 WinHTTP 不可重入(12)。WinINET 是可重入的吗?

我们有一个 ActiveX 控件,它与 WinINET 进行同步 HTTP。如果浏览器(在 javascript 中)触发异步 http 请求(ajax)然后立即调用 ActiveX 操作(相同的 IE 进程),看起来这两个操作是交错的,可能在同一个 API 上可重入,并打破 WinINET 状态: ajax 上的 clearInterval 错误地失败了一次。我们将 EXT 用于 ajax,并且 EXT 假设 clearInterval 第一次工作。