【问题标题】:400 Bad Request SEC-43400 错误请求 SEC-43
【发布时间】:2017-03-25 14:18:34
【问题描述】:

有一个函数(下面的代码)来验证一个 URL 是否确实存在,但遇到了一个失败的函数。不过它在浏览器中是works fine,这就是为什么我很好奇为什么这个 URL 会失败。

我得到的回复是:

HTTP/1.1 400 Bad Request
content-length: 378
x-synthetic: true
expires: Thu, 01 Jan 1970 00:00:00 UTC
pragma: no-cache
cache-control: no-cache, must-revalidate
content-type: text/html; charset=UTF-8
connection: close
date: Sat, 25 Mar 2017 14:05:45 UTC
x-contextid: 1INsx8lY/G2fZ1ojZ
x-via: 1.1 echo105

<html>
<head>
<title>400 Bad Request</title>
<style> body { background-color: #F2F2F2; color: #3E3E3E; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; } pre { word-wrap: break-word; } </style>
</head>
<body>
<h1>400 Bad Request</h1>
<p><pre>1INsx8lY/G2fZ1ojZ @ Sat, 25 Mar 2017 14:05:45 GMT</pre>
<p><pre>SEC-43</pre>
<p><pre></pre>
</body>
</html>

神秘的上下文 id 和时间戳不断变化,否则我会得到相同的结果。

  • 无论我在该网站上尝试哪个页面,似乎都会发生这种情况
  • 在本地(Windows 上的 xampp)和远程在我可以访问的网络酒店(one.com、unix/lamp-type-stack)上发生
  • 尝试将用户代理设置为我的 Firefox 的副本,但也无济于事。
  • 在终端中运行curl -i -X HEAD https://www.bergenadventistkirke.com确实工作......但这只会让我更加困惑......

我尝试搜索“错误请求”和“SEC-43”,但我似乎只看到一堆显示相同错误 html 的结果。点击它们会导致错误的证书、其他错误,或者它们会重定向到其他地方。

有人知道这里发生了什么吗?

恶意软件?某种神奇的非浏览器流量阻塞?


代码

<?php
$c = curl_init();
curl_setopt_array($c, [
    CURLOPT_URL => 'https://www.bergenadventistkirke.com',
    CURLOPT_HEADER => true,
    CURLOPT_FOLLOWLOCATION => true,
]);
ob_start();
curl_exec($c);
curl_close($c); 

header('content-type: text/plain; charset=utf-8');
echo ob_get_clean();

【问题讨论】:

    标签: php curl bad-request


    【解决方案1】:

    他们正在检查 User-Agent 标头,如果没有看到则返回 HTTP 400 Bad Request。命令行中的curl 设置了curl/7.46.0 的用户代理,这就是它起作用的原因。

    试试:

    $c = curl_init();
    curl_setopt_array($c, [
        CURLOPT_URL => 'https://www.bergenadventistkirke.com',
        CURLOPT_HEADER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_USERAGENT => "curl/7.46.0"
    ]);
    ob_start();
    curl_exec($c);
    curl_close($c);
    
    header('content-type: text/plain; charset=utf-8');
    echo ob_get_clean();
    

    【讨论】:

    • 嗯,这很奇怪......我之前尝试设置用户代理,然后我得到了同样的错误,但现在它可以工作了?哦,好吧,这确实回答了这个问题,我可以再次睡觉,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2018-04-07
    相关资源
    最近更新 更多