jQuery ajax跨站点获取标题HTML状态

时间:2015-03-23 12:37:40

标签: javascript jquery ajax

这是针对用户的。

我想转到一个URL并查看它是否重定向(状态302)或是否返回OK状态(状态200)。

唯一的问题是URL被同源策略阻止,因此我无法进行ajax调用以获取头部。

我正在寻找一种有效的方法来检查这个而不是使用YQL /加载整个页面(我对这类东西非常不熟悉)。

1 个答案:

答案 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()

从jQuery中调用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

});