C# 查询webApi时添加了3个新标题,但它们来自何处?

C# 查询webApi时添加了3个新标题,但它们来自何处?,c#,caching,http-headers,httpwebrequest,C#,Caching,Http Headers,Httpwebrequest,在fiddler中捕获对网站的点击,希望在c应用程序中实现流程自动化。Fiddler捕获2个请求选项并获取: OPTIONS https://host... HTTP/1.1 Host: host Connection: keep-alive Accept: */* Access-Control-Request-Method: GET Access-Control-Request-Headers: pairm,pairx,pairz Origin: https://host... User-Ag

在fiddler中捕获对网站的点击,希望在c应用程序中实现流程自动化。Fiddler捕获2个请求选项并获取:

OPTIONS https://host... HTTP/1.1
Host: host
Connection: keep-alive
Accept: */*
Access-Control-Request-Method: GET
Access-Control-Request-Headers: pairm,pairx,pairz
Origin: https://host...
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Sec-Fetch-Dest: empty
Referer: https://host...
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,pl;q=0.7
返回此响应:

HTTP/1.1 204 No Content
Server: nginx/1.16.1
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.4.13
Cache-Control: no-cache, private
Date: Mon, 25 Jan 2021 13:58:03 GMT
Access-Control-Allow-Origin: *
Vary: Access-Control-Request-Method, Access-Control-Request-Headers
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: pairm,pairx,pairz
Access-Control-Max-Age: 0
HTTP/1.1 200 OK
Server: nginx/1.16.1
Content-Type: application/json
Connection: keep-alive
X-Powered-By: PHP/7.4.13
Cache-Control: no-cache, private
Date: Mon, 25 Jan 2021 13:58:03 GMT
Access-Control-Allow-Origin: *
Content-Length: 2114

{json}
接着是另一项请求:

GET https://host... HTTP/1.1
Host: host
Connection: keep-alive
Accept: application/json, text/plain, */*
PairZ: 2537624327195356974404768858565322431647991274896813
PairM: 2267673572979313282937216167457434744448197714372250
PairX: 6431909992249094676623824191533524405911989986455913
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50
Origin: https://host...
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://host...
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,pl;q=0.7
答复:

HTTP/1.1 204 No Content
Server: nginx/1.16.1
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.4.13
Cache-Control: no-cache, private
Date: Mon, 25 Jan 2021 13:58:03 GMT
Access-Control-Allow-Origin: *
Vary: Access-Control-Request-Method, Access-Control-Request-Headers
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: pairm,pairx,pairz
Access-Control-Max-Age: 0
HTTP/1.1 200 OK
Server: nginx/1.16.1
Content-Type: application/json
Connection: keep-alive
X-Powered-By: PHP/7.4.13
Cache-Control: no-cache, private
Date: Mon, 25 Jan 2021 13:58:03 GMT
Access-Control-Allow-Origin: *
Content-Length: 2114

{json}
html/js中没有任何内容,没有cookies,没有身份验证,也没有表单数据被交换,我不知道这里使用什么机制来添加PairZ、PairM和PairZ,以及它们的值来自哪里

文档CORS或缓存中的任何信息都必须隐藏得很好,或者我只是瞎了眼,但我找不到任何工作流来解释这3个标题是如何进入的。非常感谢任何提示/帮助。

常规请求之前的选项请求是浏览器CORS机制的一部分。 跨源资源共享CORS是一种机制,允许从提供第一个资源的域之外的另一个域请求网页上的受限资源

选项请求是这个过程的一部分,称为飞行前请求 假设此请求在实际请求之前检查服务器CORS设置。 飞行前请求的响应决定了您是否有权执行真正的请求

过程如下所示:

在您的情况下,您将获得带有自定义标题的请求。

常规请求之前的选项请求是浏览器CORS机制的一部分。 跨源资源共享CORS是一种机制,允许从提供第一个资源的域之外的另一个域请求网页上的受限资源

选项请求是这个过程的一部分,称为飞行前请求 假设此请求在实际请求之前检查服务器CORS设置。 飞行前请求的响应决定了您是否有权执行真正的请求

过程如下所示:


在您的情况下,您会收到带有自定义标题的请求。

该请求是由C应用程序还是浏览器发起的?如果是浏览器,那么您是否测试了多个browsers@TarunLalwani谢谢你的提问。上述请求在浏览器边缘中发出,并在Fiddler中捕获。我想在c应用程序中自动化这个过程,但为了做到这一点,我需要找出PairZ,M.X的来源。我试过Chrome,请求是相同的,对值不同,Chrome又增加了两个标题:SecChua:GoogleChrome;v=87,不适用;品牌;v=99,铬;v=87和sec ch ua mobile:?0与IMHO无关。我很确定您正在浏览的网站正在向请求添加标题。应用程序在选项请求中询问服务器是否接受这些头访问控制请求头:pairm、pairx、pairz和GET,服务器回答“是”,访问控制允许头:pairm、pairx、pairz以及GET请求。在第二个请求GET中,头被添加到请求中。“我不认为还有第三方应用参与其中。”塞巴斯蒂安。我同意。但是发现了问题-我没有注意到Fiddler自动截断响应体/文件内容。我做了一个错误的假设,配对头不在JS文件中,并且完全偏离了轨道,试图归咎于一个虚构的第三方机制。这个请求是由C应用程序还是浏览器发起的?如果是浏览器,那么您是否测试了多个browsers@TarunLalwani谢谢你的提问。上述请求在浏览器边缘中发出,并在Fiddler中捕获。我想在c应用程序中自动化这个过程,但为了做到这一点,我需要找出PairZ,M.X的来源。我试过Chrome,请求是相同的,对值不同,Chrome又增加了两个标题:SecChua:GoogleChrome;v=87,不适用;品牌;v=99,铬;v=87和sec ch ua mobile:?0与IMHO无关。我很确定您正在浏览的网站正在向请求添加标题。应用程序在选项请求中询问服务器是否接受这些头访问控制请求头:pairm、pairx、pairz和GET,服务器回答“是”,访问控制允许头:pairm、pairx、pairz以及GET请求。在第二个请求GET中,头被添加到请求中。“我不认为还有第三方应用参与其中。”塞巴斯蒂安。我同意。但是发现了问题-我没有注意到Fiddler自动截断响应体/文件内容。我做了一个错误的假设,配对头不在JS文件中,并且完全偏离了轨道,试图将你的答案归咎于想象中的第三方机制heheThanks。我很抱歉,如果我的问题不清楚,我理解CORS机制-我犯了一个愚蠢的错误-我没有看到Fiddler自动截断响应体,这让我误以为配对头在任何JS文件中。谢谢你的回答。如果我不是,我很抱歉 很明显,在我的问题中,我理解CORS机制——我犯了一个愚蠢的错误——我没有看到Fiddler自动截断响应体,这让我误以为配对头在任何JS文件中。