Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过浏览器与节点http模块访问站点时接收不同的响应头_Javascript_Node.js_Google Chrome_Http_Http Headers - Fatal编程技术网

Javascript 通过浏览器与节点http模块访问站点时接收不同的响应头

Javascript 通过浏览器与节点http模块访问站点时接收不同的响应头,javascript,node.js,google-chrome,http,http-headers,Javascript,Node.js,Google Chrome,Http,Http Headers,我正在节点服务器中编写一个函数,通过检查标题中的x-frame-options字段来检测特定URL是否可以在I-frame中呈现 虽然这可以正常工作,但对于某些站点,当通过http模块访问时,我会收到一个没有此字段的标头。但是,在浏览器中打开时,这些站点的标题正确地包含此选项 例如:访问artstation.com时: 在Node.js中,响应头是: {"date":"Fri, 17 Jan 2020 03:37:06 GMT", "connection":"close","cache-cont

我正在节点服务器中编写一个函数,通过检查标题中的
x-frame-options
字段来检测特定URL是否可以在I-frame中呈现

虽然这可以正常工作,但对于某些站点,当通过http模块访问时,我会收到一个没有此字段的标头。但是,在浏览器中打开时,这些站点的标题正确地包含此选项

例如:访问artstation.com时:

Node.js中,响应头是:

{"date":"Fri, 17 Jan 2020 03:37:06 GMT",
"connection":"close","cache-control":"private, 
max-age=0, no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0","expires":"Thu, 01 Jan 1970 00:00:01 GMT",
"location":"https://www.artstation.com/",
"x-content-type-options":"nosniff",
"server":"cloudflare",
"cf-ray":"556549e5fbeaefd8-EWR"}
cache-control: max-age=0, private, must-revalidate
cf-cache-status: DYNAMIC
cf-ray: 5565511b5d3fe6d0-EWR
content-encoding: gzip
content-type: text/html; charset=utf-8
date: Fri, 17 Jan 2020 03:42:01 GMT
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
set-cookie: _ArtStation_session=TEFNMnlrR0UrK1A0UTgzM2FqOGJhMXZkU2dhYitxVW83ajJhMXo0SzJ4T0tENGhwYVppVTZpL0lOSHZ1M0pmRERRaUZ5Z0FTMWRuWTRsTm95VHQwUlhlcEdXN1JCSGtsL0pPdHNtSFF4R3ZScjhUOHFDOWkrSEg3RjNoemZ5aFVWMGJweXFwQU56Q3dOV25icXNNNGtjK3RwbDB4Tml0cjZWSHRWZ1dMK0FSajl2OHZoazFrckVaSTcyRkxFRHAzbHQrbTlpUnZudmRoVXNKYkF5TmlyUT09LS1rVkhhWG5OZ3ZOK0hUckdhY0pRbDJ3PT0%3D--083e61c9e5af420688bc4d309212aafb2de70ebb; domain=.artstation.com; path=/; expires=Fri, 17 Jan 2020 05:12:01 -0000; secure; HttpOnly
status: 200
status: 200 OK
strict-transport-security: max-age=0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-powered-by: Phusion Passenger Enterprise
x-request-id: 1e36371b-eb7c-419e-97ae-6c9ac901c240
x-runtime: 0.040934
x-xss-protection: 1; mode=block
在Chrome浏览器中,响应标题为:

{"date":"Fri, 17 Jan 2020 03:37:06 GMT",
"connection":"close","cache-control":"private, 
max-age=0, no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0","expires":"Thu, 01 Jan 1970 00:00:01 GMT",
"location":"https://www.artstation.com/",
"x-content-type-options":"nosniff",
"server":"cloudflare",
"cf-ray":"556549e5fbeaefd8-EWR"}
cache-control: max-age=0, private, must-revalidate
cf-cache-status: DYNAMIC
cf-ray: 5565511b5d3fe6d0-EWR
content-encoding: gzip
content-type: text/html; charset=utf-8
date: Fri, 17 Jan 2020 03:42:01 GMT
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
set-cookie: _ArtStation_session=TEFNMnlrR0UrK1A0UTgzM2FqOGJhMXZkU2dhYitxVW83ajJhMXo0SzJ4T0tENGhwYVppVTZpL0lOSHZ1M0pmRERRaUZ5Z0FTMWRuWTRsTm95VHQwUlhlcEdXN1JCSGtsL0pPdHNtSFF4R3ZScjhUOHFDOWkrSEg3RjNoemZ5aFVWMGJweXFwQU56Q3dOV25icXNNNGtjK3RwbDB4Tml0cjZWSHRWZ1dMK0FSajl2OHZoazFrckVaSTcyRkxFRHAzbHQrbTlpUnZudmRoVXNKYkF5TmlyUT09LS1rVkhhWG5OZ3ZOK0hUckdhY0pRbDJ3PT0%3D--083e61c9e5af420688bc4d309212aafb2de70ebb; domain=.artstation.com; path=/; expires=Fri, 17 Jan 2020 05:12:01 -0000; secure; HttpOnly
status: 200
status: 200 OK
strict-transport-security: max-age=0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-powered-by: Phusion Passenger Enterprise
x-request-id: 1e36371b-eb7c-419e-97ae-6c9ac901c240
x-runtime: 0.040934
x-xss-protection: 1; mode=block
正如您可以看到的那样,
x-frame-options:SAMEORIGIN
出现在Chrome的响应头中,但不在节点中

为什么响应标题不同


此外,请注意,这种行为并不适用于所有网站。访问google.com时,浏览器和节点中的标题匹配。

它可能会根据请求中的用户代理返回不同的数据。您可以尝试将Chrome UA作为节点请求的一部分进行传递,并查看您得到了什么。这可能是因为网站正在使用cloudflare,它有一些规则来阻止对网站的访问,而没有特定的标题/浏览器。试着把你的节点代码伪装成Googlebot或者把浏览器伪装成用户代理,看看会发生什么,看看这是否有帮助,谢谢!尝试在请求中传递Chrome/googlebot/mozilla,但没有成功。反应仍然是一样的