1

PHP Tonic フレームワークを使用しています。この例を出発点として取り上げました: GitHub リンク

Cookie に基づく認証方法を追加したいと思います。それは正しい解決策ですか?前のものは、次のようなクエリ文字列のトークン変数に基づいていました: /serviceName?token=XXXXXXXXXxx* * & トークンは 10 秒間有効でした。

もちろん、それは適切な解決策ではありません。トークンは呼び出しごとに変更されるため、ブラウザのキャッシュを使用できません。アイデア?

4

1 に答える 1

1

考えられる解決策は、HTTPヘッダーを使用することです。

$urlToCall = '<get the link>';
$credentials =  Crypt::createToken();
$reqHeaders = apache_request_headers();

// Configuring curl options extra:CURLOPT_HEADER => 1,
$options = array(
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => array('Authorization: ' . $credentials)
);

$ch = curl_init($urlToCall);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);

/*
//$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
//$header = substr($response, 0, $header_size);
//$body = substr($response, $header_size);

if (curl_errno($ch)) {
    print curl_error($ch);
} else {
    list($headers, $content) = explode("\r\n\r\n", $response, 2);
    foreach (explode("\r\n", $headers) as $hdr) {
        header($hdr);   
    //echo $hdr . '<br>';
    //print_r($hdr);
    }
    echo $content;
}
*/

if (curl_errno($ch)) {
    print curl_error($ch);
} else {
    header("Accept: " . $reqHeaders['Accept']);
    $finfo = new finfo(FILEINFO_MIME);
    header("Content-Type: " . $finfo->buffer($response));
    print $response;
}
curl_close($ch);
于 2012-06-05T09:00:33.147 に答える