问题标签 [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.
php - PHP get_headers() 因 Pinterest 而失败
我目前正在开发一种工具来集成不同社交网络的链接:
我正在使用像这样的非常基本的正则表达式:
在客户端和服务器端,以对每个链接进行最少的域验证。
然后,我使用这个函数来验证页面是否真的存在(集成社交网络链接毕竟不起作用):
注意:在这个函数中,我使用 Diego Perini 的正则表达式在发送请求之前验证 URL:
到目前为止,所有测试的链接都没有产生任何错误,但是测试 Pinterest 给我带来了一系列非常可怕的错误消息:
有人知道我在这里做错了什么吗?
我的意思是,Pinterest 不是一个具有有效证书的流行社交网络吗(我个人不使用它,我只是创建了一个用于测试的帐户)?
谢谢您的帮助,
来自蒙特利尔的 Jonathan Parent-Lévesque
php - PHP 如何在 blogspot 中检查已删除的博客?
我想检查博客状态,活跃或删除。
我正在尝试使用 phpget_headers();
我可以检查该博客是否处于活动状态或已删除,但是如何检查博客状态是否已删除但可以注册?
示例结果:
感谢帮助...
php - PHP get_headers 递归
我正在尝试实现标头响应以遵循递归标头重定向。我已经实现了以下对于第一个请求可以正常工作,但是如果在标头中找到位置重定向,则 get_headers 不会返回重定向位置的任何结果。我想显示每个标头请求的标头。
这就是我所做的。
任何想法?我有一个在线实现......如果需要查看工作代码。谢谢
wordpress - 致命错误:在第 11 行的 /home/theun3wr/public_html/author.php 中调用未定义函数 get_header()
自从我在 12 月转向多域托管以来,我的网站上的错误一直困扰着我。有太多的问题,我已经忘记了它们。每天我都会遇到一个令人震惊的新错误,我对此一无所知。
最近的一个无法访问我网站上的作者简介 - http://www.theunbiasedblog.com/author/nikhil
网站的其余部分工作正常,除了以下几点:
作者简介(上面提到)这个错误
/li>网站上的标记链接 ( http://www.theunbiasedblog.com/tag/windows ) 给出此错误
/li>网站上的类别链接 (theunbiasedblogcom/category/tech)
/li>
我无法弄清楚get_header()
在所有这些非功能链接的第 11 行如何处理。结果我从谷歌收到了 30K 404 错误。
@prakashrao 在 wp-includes/general-template.php
我有这个-
php - WP - PHP cURL 或 get_headers() 函数导致 404 错误
1)我正在使用wordpress引擎。2)我有一个数字数组(),其中包含 800 多个链接,就像这样。
我要做的是运行 foreach() 函数并检查链接是否仍然存在(不返回 404 错误)。
我尝试了2个功能:
1)
所以根据第一个函数,$toDeleteLinks 数组应该包含所有返回 404 错误的链接。在这里使用 get_headers() 函数...
2)
第二个应该只使用 cURL 做同样的事情。
但是在这两种情况下,我都会被重定向到 wordpress 404.php 页面((。我认为这是因为链接数量很大。
你能帮我解决这个问题吗?使用另一个功能,或者但是......
谢谢。
javascript - 检查外部 url 是否工作 PHP 或 JS
我有一个包含 1000 多个外部链接的 php 数字数组。你能帮我找出一个 PHP 或 JS 函数来循环遍历每个链接并检查它是否工作吗?创建一个数组并包含不再工作的链接。
现在我正在使用这段代码:
但它给出了 500 Internal Server Error .. 似乎服务器无法处理这么多请求,因为我尝试创建一个包含 4 个链接、2 个正确链接、2 个不正确链接的数组,并且该函数具有魅力。
我即将把我的耳朵从我的脑海中拉出来,所以请帮助 :D 在此先感谢!
php - 是否可以检查站点以查看它是否响应 HTTPS 请求?(PHP)
我有一个 PHP 函数:
但是,当我源自的域只是HTTP,并且我想动态链接到 HTTPS 的域时,条件返回 http。
所以,我的想法是我可以检查该站点是否响应 HTTPS 请求,如果是,则返回 https,否则返回 http。
我认为使用@get_headers 数组是可行的,并检查 [0] 值是否具有 HTTPS,但我无法确认是否存在 HTTPS 标头(例如 HTTPS/1.1)。
我一直在关注这个问题:如何通过 PHP 检查 URL 是否存在?,但我会检查 HTTPS。
我的逻辑流程是否正确,还是我遗漏了什么?
编辑:在特定示例中,我只会检查我可以控制的网站。所以我事先知道内容是否通过 HTTPS 提供。
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]
. 但是,再一次,如果状态代码是数字索引的,这只是确定的事情。
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 代码并觉得他们可以从中获得一些见解的人,可以在以下位置找到函数定义:
和
'stream_get_meta_data' (PHP Git)
问题
stream_get_meta_data
与 相比,为什么代表性不足(在搜索和可用代码片段中)get_headers
?我的措辞导致了意见,但我的意图更接近于:“是否有一些如此知名和可怕的东西
stream_get_meta_data
会阻止人们使用它?”与前面类似,两者之间是否存在众所周知的、业界公认的优缺点?对 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
功能站点)。
非常感谢,如果你做到了这一步。
另外,如果您投反对票,请发表评论,以便我可以改进问题,我们都可以为将来的案例学习。
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
,并且对解决方案不感兴趣CURL
。stream_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
为模仿浏览器,执行操作,然后将其恢复为声明值(可能为空白)。
在此处找到用户代理更改。