Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
如何阻止某些HTTP头字段?_Http_Http Headers - Fatal编程技术网

如何阻止某些HTTP头字段?

如何阻止某些HTTP头字段?,http,http-headers,Http,Http Headers,例如,页面正在发送一个我不想从中加载异步CSS的“链接”http头字段。我怎样才能阻止它?我是否可能得到这些标题,从中删除链接字段,然后页面将在没有添加CSS的情况下加载(不放在页面正文中) 我试图修改标题,但没有用 request('https://www.google.com', function(err, resp, data){ if (resp.statusCode == 200) { console.log(resp.headers); // headers }

例如,页面正在发送一个我不想从中加载异步CSS的“链接”http头字段。我怎样才能阻止它?我是否可能得到这些标题,从中删除链接字段,然后页面将在没有添加CSS的情况下加载(不放在页面正文中)

我试图修改标题,但没有用

request('https://www.google.com', function(err, resp, data){
  if (resp.statusCode == 200) {
    console.log(resp.headers); // headers
  }
  else {console.log(err);}
});

请求是一个node.js模块。在通过浏览器加载标题之前,我需要修改标题(通过“呈现”和ejs模板组合传递修改后的标题不起作用)。

是的,可以从html响应中删除css和js链接(它们不是标题),只需使用jsdom或cheerio显示结果。

是,可以从html响应中删除css和js链接(它们不是标题),只使用jsdom或cheerio显示结果。

更新:OP讨论的是“Web链接”,即带有HTTP响应标题的预回迁资源上的内容,希望阻止此类预回迁行为

为了做到这一点,可以手动创建代理,阻止所有不需要的数据,只返回HTTP头和感兴趣的内容。例如:

router.get('/proxy-to-google', function(req, res) {
  request('https://www.google.com', function(err, resp, data) {
    // get interested headers from resp object, and set it in res
    res.set('Example-Header', 'XXX');
    ...
    res.send(data);
  });  
});

在web世界中有三种类型的头/头,您似乎混淆了这些概念

  • HTTP头。这些是HTTP请求和响应中传递的头信息。在问题示例中,将打印HTTP响应头
  • HTML中的
    元素
    。这些是HTML页面主体中存在的可见元素,主要用于包装标题、导航栏等元素
  • HTML中的
    元素
    。这是HTML文档的元元素。它在页面中不可见,但负责标记HTML文档的重要信息,如CSS样式表链接、JavaScript文件URL等

  • 在你的情况下,你试图阻止上面第三种“头”,你可以使用@Zuei Zukenberg的建议。此
    元素与HTTP头无关。

    更新:OP正在讨论“Web链接”,即带有HTTP响应头的预取资源上的内容,并希望阻止此类预取行为

    为了做到这一点,可以手动创建代理,阻止所有不需要的数据,只返回HTTP头和感兴趣的内容。例如:

    router.get('/proxy-to-google', function(req, res) {
      request('https://www.google.com', function(err, resp, data) {
        // get interested headers from resp object, and set it in res
        res.set('Example-Header', 'XXX');
        ...
        res.send(data);
      });  
    });
    

    在web世界中有三种类型的头/头,您似乎混淆了这些概念

  • HTTP头。这些是HTTP请求和响应中传递的头信息。在问题示例中,将打印HTTP响应头
  • HTML中的
    元素
    。这些是HTML页面主体中存在的可见元素,主要用于包装标题、导航栏等元素
  • HTML中的
    元素
    。这是HTML文档的元元素。它在页面中不可见,但负责标记HTML文档的重要信息,如CSS样式表链接、JavaScript文件URL等

  • 在你的情况下,你试图阻止上面第三种“头”,你可以使用@Zuei Zukenberg的建议。这个
    元素与HTTP头无关。

    我不是说HTML页面响应,而是说HTTP头响应。如果服务器给您响应-在浏览器获取并启动异步作业尽快加载它们之前,可以删除部分HTTP头?@Proo1931 css和js的“链接”存在于HTML页面响应体中,而不是HTTP头中。Ohhh因此,首先我们需要将css和js添加到HTML页面的头元素中,然后我们可以通过HTTP头链接字段请求异步加载它们。。。好的,我现在明白了,谢谢你解释@shaochuancs,zuei post当时是对的,我会接受它。@zuei Zukenberg通过删除CS和JS链接你的意思是编辑我在请求和jsdom模块帮助下获取的内容-通过删除链接/脚本标记?还是有更简单的方法呢?嗯。。一个简单的解决方案可以是使用正则表达式,否则,使用jsdom可以将所有样式标记作为目标,并将它们从dom中删除。如果服务器给您响应-在浏览器获取并启动异步作业尽快加载它们之前,可以删除部分HTTP头?@Proo1931 css和js的“链接”存在于HTML页面响应体中,而不是HTTP头中。Ohhh因此,首先我们需要将css和js添加到HTML页面的头元素中,然后我们可以通过HTTP头链接字段请求异步加载它们。。。好的,我现在明白了,谢谢你解释@shaochuancs,zuei post当时是对的,我会接受它。@zuei Zukenberg通过删除CS和JS链接你的意思是编辑我在请求和jsdom模块帮助下获取的内容-通过删除链接/脚本标记?还是有更简单的方法呢?嗯。。一个简单的解决方案是使用正则表达式,否则,使用jsdom,您可以将所有样式标记作为目标,并将它们从dom中删除。不,我试图捕获HTTP头-“链接”,它希望异步加载CSS和JS,但我发现HTML页面中的头元素也包含这些文件。HTTP header只想尽快下载它们-这会在我的应用程序中导致错误-因为在我可以剪切带有这些链接的HEAD HTML部分之前,它们已经加载(预加载)。好吧,在HTTP header中包含CSS和JS“link”是一个非常奇怪的设计。是的,我知道,我也很惊讶(不知道HTTP头中有链接字段,您可以使用rel=preload选项来帮助使用样式和脚本,但是如何将它们取下?您知道吗?啊,您正在谈论“Web链接”,RFC5988之类的东西。您想为自己的网站禁用web链接预回迁吗?还是尝试为某些第三方网站(如Google)禁用它?我测试了一个网站,它通过HTTP头加载样式和脚本