问题标签 [get-headers]

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 回答
1062 浏览

php - PHP get_headers() 因 Pinterest 而失败

我目前正在开发一种工具来集成不同社交网络的链接:

我正在使用像这样的非常基本的正则表达式:

在客户端和服务器端,以对每个链接进行最少的域验证。

然后,我使用这个函数来验证页面是否真的存在(集成社交网络链接毕竟不起作用):

注意:在这个函数中,我使用 Diego Perini 的正则表达式在发送请求之前验证 URL:

到目前为止,所有测试的链接都没有产生任何错误,但是测试 Pinterest 给我带来了一系列非常可怕的错误消息:

有人知道我在这里做错了什么吗?

我的意思是,Pinterest 不是一个具有有效证书的流行社交网络吗(我个人不使用它,我只是创建了一个用于测试的帐户)?

谢谢您的帮助,

来自蒙特利尔的 Jonathan Parent-Lévesque

0 投票
1 回答
204 浏览

php - PHP 如何在 blogspot 中检查已删除的博客?

我想检查博客状态,活跃或删除。

我正在尝试使用 phpget_headers(); 我可以检查该博客是否处于活动状态或已删除,但是如何检查博客状态是否已删除但可以注册?

示例结果:

感谢帮助...

0 投票
1 回答
588 浏览

php - PHP get_headers 递归

我正在尝试实现标头响应以遵循递归标头重定向。我已经实现了以下对于第一个请求可以正常工作,但是如果在标头中找到位置重定向,则 get_headers 不会返回重定向位置的任何结果。我想显示每个标头请求的标头。

这就是我所做的。

任何想法?我有一个在线实现......如果需要查看工作代码。谢谢

0 投票
1 回答
1806 浏览

wordpress - 致命错误:在第 11 行的 /home/theun3wr/public_html/author.php 中调用未定义函数 get_header()

自从我在 12 月转向多域托管以来,我的网站上的错误一直困扰着我。有太多的问题,我已经忘记了它们。每天我都会遇到一个令人震惊的新错误,我对此一无所知。

最近的一个无法访问我网站上的作者简介 - http://www.theunbiasedblog.com/author/nikhil

网站的其余部分工作正常,除了以下几点:

  1. 作者简介(上面提到)这个错误

    /li>
  2. 网站上的标记链接 ( http://www.theunbiasedblog.com/tag/windows ) 给出此错误

    /li>
  3. 网站上的类别链接 (theunbiasedblogcom/category/tech)

    /li>

我无法弄清楚get_header()在所有这些非功能链接的第 11 行如何处理。结果我从谷歌收到了 30K 404 错误。

@prakashrao 在 wp-includes/general-template.php

我有这个-

0 投票
0 回答
309 浏览

php - WP - PHP cURL 或 get_headers() 函数导致 404 错误

1)我正在使用wordpress引擎。2)我有一个数字数组(),其中包含 800 多个链接,就像这样。

我要做的是运行 foreach() 函数并检查链接是否仍然存在(不返回 404 错误)。

我尝试了2个功能:

1)

所以根据第一个函数,$toDeleteLinks 数组应该包含所有返回 404 错误的链接。在这里使用 get_headers() 函数...

2)

第二个应该只使用 cURL 做同样的事情。

但是在这两种情况下,我都会被重定向到 wordpress 404.php 页面((。我认为这是因为链接数量很大。

你能帮我解决这个问题吗?使用另一个功能,或者但是......

谢谢。

0 投票
0 回答
185 浏览

javascript - 检查外部 url 是否工作 PHP 或 JS

我有一个包含 1000 多个外部链接的 php 数字数组。你能帮我找出一个 PHP 或 JS 函数来循环遍历每个链接并检查它是否工作吗?创建一个数组并包含不再工作的链接。

现在我正在使用这段代码:

但它给出了 500 Internal Server Error .. 似乎服务器无法处理这么多请求,因为我尝试创建一个包含 4 个链接、2 个正确链接、2 个不正确链接的数组,并且该函数具有魅力。

我即将把我的耳朵从我的脑海中拉出来,所以请帮助 :D 在此先感谢!

0 投票
1 回答
65 浏览

php - 是否可以检查站点以查看它是否响应 HTTPS 请求?(PHP)

我有一个 PHP 函数:

但是,当我源自的域只是HTTP,并且我想动态链接到 HTTPS 的域时,条件返回 http。

所以,我的想法是我可以检查该站点是否响应 HTTPS 请求,如果是,则返回 https,否则返回 http。

我认为使用@get_headers 数组是可行的,并检查 [0] 值是否具有 HTTPS,但我无法确认是否存在 HTTPS 标头(例如 HTTPS/1.1)。

我一直在关注这个问题:如何通过 PHP 检查 URL 是否存在?,但我会检查 HTTPS。

我的逻辑流程是否正确,还是我遗漏了什么?

编辑:在特定示例中,我只会检查我可以控制的网站。所以我事先知道内容是否通过 HTTPS 提供。

0 投票
2 回答
1298 浏览

php - PHP - 对于 get_headers($url, 1),状态代码的键是 *always* 整数吗?

查看 get_headers()的PHP 文档...

...有两种方法可以运行它:

#1 ( format === 0)

#2 ( format !== 0)

两者之间的区别在于数组是否被数字索引(第一种情况)......

(摘自文档

...或用键索引(第二种情况)...

(摘自文档

在文档中给出的示例中,http 状态代码属于数字索引...

...无论format设置为什么。

同样,在我曾经通过的每个有效 URL get_headers(即许多 URL)中,状态代码始终位于数字索引下,即使存在多个状态代码......

但是,我没有(阅读:不能)在每种类型的服务器上测试每个 URL,因此不能绝对地谈论状态代码索引。

是否有get_headers($url, 1)可能返回非数字 http 状态代码索引?还是硬编码到函数中以始终在数字索引下返回状态代码-无论如何?


额外阅读,对上述问题来说不是必需的或必不可少的......

对于好奇的人,我的问题主要与优化有关。get_headers()已经非常缓慢了——即使发送 HEAD 请求而不是 GET ——并且在将返回数组与 apreg_match和正则表达式结合后只会变得更糟。

(你会发现的各种CURL方法甚至更慢,我已经get_headers()用很长的 URL 列表对它们进行了测试,所以请把那个臀部射击,搭档)

如果我知道状态代码总是以数字索引,那么我可以通过忽略所有非整数索引来加快我的代码速度,然后再通过preg_match. 一个 URL 的差异可能只有几分之一秒,但是当整天运行这个函数时,每天,这些小部分加起来。

另外(编辑#1)

在所有重定向之后,我目前只担心最终的http 状态代码(和 URL)。我正在使用与此类似的方法获取最终 URL。

似乎运行后

那么重定向后的最终状态码将始终在$headers[0]. 但是,再一次,如果状态代码是数字索引的,这只是确定的事情。

0 投票
0 回答
685 浏览

php - PHP - `get_headers` 和 `stream_get_meta_data` 之间的区别?

介绍/免责声明

其中相当一部分是可以在很大程度上被忽略的输出。它仍然是一个读者,但我试图在我的分析和提问中做到彻底。如果你熟悉stream_get_meta_data,你可以跳到最后的“问题”

除了在文档中,我很难找到很多关于 PHP 的stream_get_meta_data. 整体功能与 PHP 的功能并没有太大的不同get_headers,但我终其一生都找不到两者之间的任何比较,或者前者的优缺点。

设置

到目前为止,我一直使用 PHPget_headers来验证 URL 的有效性。缺点get_headers速度慢是出了名的。可以理解,大部分延迟直接归因于托管感兴趣站点的服务器,但可能该方法过于稳健,或者其他原因使其变慢。

有很多链接建议使用CURL,声称它更快,但我已经同时运行了两者的定时测试,并且get_headers总是名列前茅,通常是 1.5 或 2 倍。

我还没有看到任何使用 的解决方案stream_get_meta_data,今天才第一次偶然发现它。我已经用尽了我的 Google 技能,但运气不佳。但是,为了优化我的方案,我进行了一些测试。

测试

使用 106 个当前(即 live、valid、status=200)URL 的列表运行get_headers和之间的比较:stream_get_meta_data

Code Block #1

而且我得到的结果在90% 或更多的情况下stream_get_meta_data都名列前茅。有时时间几乎相同,但通常运行时间更短stream_get_meta_data

Run Times #1

两者的 [stringified] 输出类似于:

Excerpt of Comparison #1

在大多数情况下,所有相同的数据,除了stream_get_meta_data不提供任何包含键的方法之外wrapper_data,无需手动解析。

够简单...

Code Block #2.1/2.2

在哪里...

并且输出与以下内容相同get_headers($url, 1)

Excerpt of Comparison #2

即使整理出钥匙,stream_get_meta_data 也是冠军:

Sample Run Times #2

注意:这些测试在廉价的共享服务器上运行 - 因此测试时间差异很大。话虽如此,两种方法之间的差距在测试之间是高度一致的。

额外的

对于那些了解 PHP 的 c 代码并觉得他们可以从中获得一些见解的人,可以在以下位置找到函数定义:

'get_headers' (PHP Git)

'stream_get_meta_data' (PHP Git)

问题

  1. stream_get_meta_data与 相比,为什么代表性不足(在搜索和可用代码片段中)get_headers

    我的措辞导致了意见,但我的意图更接近于:“是否有一些如此知名和可怕的东西stream_get_meta_data会阻止人们使用它?”

  2. 与前面类似,两者之间是否存在众所周知的、业界公认的优缺点?对 CS 有更全面的理解会暗示的事情。也许get_headers更安全/更健壮,更不容易受到 ne'erdowells 和服务器输出不一致的影响?或者可能get_headers已知在产生和错误的情况下工作?stream_get_meta_data

    据我所知,stream_get_meta_data确实有一些注释警告(... for fopen),但没有什么可怕到无法解决的。

只要它是安全且一致的,我想将它合并到我的项目中,因为这个操作经常执行,并且将运行时间减少一半会产生很大的不同。

编辑#1

从那以后,我发现了一些成功的 URL,get_headers但会发出警告stream_get_meta_data

get_headers仅返回403 Forbidden状态,即使您可以将 URL 粘贴到浏览器中并查看它们是工作站点。

对此不确定: 的分解stream_get_meta_data和不完整的标头get_headers(应包括所有重定向和最终status_code = 200功能站点)。


非常感谢,如果你做到了这一步。

另外,如果您投反对票,请发表评论,以便我可以改进问题,我们都可以为将来的案例学习。

0 投票
1 回答
2767 浏览

php - PHP - `get_headers` 为有效 URL 返回“400 Bad Request”和“403 Forbidden”?

描述底部的工作解决方案!

我正在运行 PHP 5.4,并试图获取 URL 列表的标题。

在大多数情况下,一切正常,但有三个 URL 会导致问题(并且可能更多,需要进行更广泛的测试)。

所有三个站点都可以在浏览器中正常工作,并产生以下标头响应:

(来自 Safari)

成功的标头

请注意,所有三个标头响应都是Code = 200

但是通过 PHP 检索标头,使用get_headers...

...返回以下内容:

无论更改 stream_context 都是这种情况

产生相同的结果。

其中任何一个都不会引发警告或错误(通常会用 抑制错误@get_headers,但两种方式都没有区别)。

我检查了我的php.ini,并allow_url_fopen设置为On

我正朝着解决方案前进stream_get_meta_data,并且对解决方案不感兴趣CURLstream_get_meta_data(及其随附的fopen)将在与 相同的位置失败get_headers,因此在这种情况下修复一个将修复两者。

通常,如果有重定向,输出如下所示:

为什么网站在浏览器中工作,但在使用时失败get_headers

有各种 SO 帖子讨论同一件事,但所有这些帖子的解决方案都与这种情况无关:

POST需要Content-Length(我正在发送HEAD请求,没有返回内容)

URL 包含 UTF-8 数据(这些 URL 中唯一的字符都来自拉丁字母)

无法发送包含空格的 URL(这些 URL 都是无空格的,并且在各个方面都非常普通)

解决方案!

(感谢 Max 在下面的答案中为我指明了正确的轨道。)

问题是因为没有 pre-defined user_agent,既没有设置 in php.ini,也没有在代码中声明它。

因此,我将其更改user_agent为模仿浏览器,执行操作,然后将其恢复为声明值(可能为空白)。

在此处找到用户代理更改。