这是针对用户的。
我想转到一个URL并查看它是否重定向(状态302)或是否返回OK状态(状态200)。
唯一的问题是URL被同源策略阻止,因此我无法进行ajax调用以获取头部。
我正在寻找一种有效的方法来检查这个而不是使用YQL /加载整个页面(我对这类东西非常不熟悉)。
答案 0 :(得分:0)
您可以在有权访问的服务器上创建网关PHP脚本,该脚本使用get_headers()
检查从请求发送的标头。获得该信息后,您可以对其进行评估并返回一些JSON。现在,您只需要使用jQuery的AJAX函数调用PHP脚本。
例如,您的PHP文件可能被称为get-status.php
,如下所示:
<?php
$headers = get_headers( $_REQUEST['url'] );
$parts = explode(' ', $headers[0]); // Matches: HTTP/1.1 200 OK
$status = $parts[1]; // Provides: 200
// Build the response:
$response = new stdClass();
$response->url = $_REQUEST['url'];
$response->date = time();
$response->status = (int) $status;
$response->redirected = ($status == 301 || $status == 302);
// Send response as JSON:
header( ' Content-Type: application/json' );
echo json_encode( $response );
?>
接下来,您可以使用$.getJSON()
get-status.php
$.getJSON( 'get-status.php', { url: 'http://www.google.com/' }, function(data) {
// Now, data contains the following params:
// data.url = http://www.google.com/
// data.date = timestamp of request
// data.status = 200
// data.redirected = false
});