如何修改使用C#的请求的HTTP头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修改使用C#的请求的HTTP头相关的知识,希望对你有一定的参考价值。

参考技术A 使用 webBrowser 控件加载页面 (webBrowser1.Url=new Url(网址)),这样就可以打开一个页面,该控件还能在页面全部载入完成后(webBrowser1_DocumentCompleted事件)模拟点击最终页面的连接,或者修改webBrowser1.Url网址跳入最终的页面。

自定义请求头引起预检请求

参考技术A

Access-Control-Allow-Headers 一定不要设置为 * 在移动端会出现 预检请求不通过的状况,切记切记切记!!!

跨域资源共享( CORS ) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器 不同的域、协议或端口 请求一个资源时,资源会发起一个 跨域 HTTP 请求

与简单请求不同,“需预检的请求”要求必须首先使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。"预检请求“的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响。
当请求满足下述任一条件时,即应首先发送预检请求:

使用了下面任一 HTTP 方法:

也就是说 当你自定义了请求头,浏览器就会先发送预检请求,期望得到想要的 Access-Control-Allow-Headers 返回头

下面是一个预检请求,因为我添加了两个自定义请求头: authorization 、 custom

这是服务器给我们的返回头为:
请注意,因为返回头没有 Access-Control-Allow-Headers 所以浏览器阻止了接下来的get请求

正确的返回头:
这里填写的是被允许的自定义请求头

以上是关于如何修改使用C#的请求的HTTP头的主要内容,如果未能解决你的问题,请参考以下文章

c#如何采集需要登录的页面

php如何修改http请求头

人回答如何修改http请求头中的origin吗

c# 怎么设置http报文头

使用 c# 计算 Content-MD5 HTTP 头文件值

自定义请求头引起预检请求