【问题标题】:PHP cURL with XmlHttpRequest带有 XmlHttpRequest 的 PHP cURL
【发布时间】:2011-07-19 12:10:33
【问题描述】:
场景:这个投票表格 (vote.php) 有 3 个字段,其中一个是包含哈希的隐藏字段。提交表单后,它会通过 XHR 使用 GET 请求单独的脚本 (process.php)。我正在尝试通过 cURL 来模拟这一点,但到目前为止只能使用 cookie jar 获取哈希并保留 phpsessionid。
问题: 处理脚本 (process.php) 似乎能够检测请求是否未使用 XHR 推送,如果我只是使用提交其所需参数,则会返回错误常规 cURL GET。
那么如何在 cURL 中模拟 XHR?或者我说 cURL 中有 XHR 甚至可能是错误的,所以您能否建议任何方法来实现这一点。
【问题讨论】:
标签:
php
curl
xmlhttprequest
【解决方案1】:
process.php 很有可能通过查看 HTTP_X_REQUESTED_WITH 标头来检查 XHR 请求,例如:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest") { /* Do stuff here */ }
因此,您可以尝试在 cUrl 请求中设置该标头:
curl -H "HTTP_X_REQUESTED_WITH:XMLHttpRequest"
这很有可能奏效。祝你好运!
【解决方案2】:
添加以下标题:X-Requested-Width: XMLHttpRequest。这是由所有主要的 JS 库添加的,以便于识别服务器上的此类请求。