设置OAuth授权标头的正确方法是什么?

时间:2011-09-27 17:28:57

标签: php oauth header

我想为网址xyz.com设置请求标头 它是在php中设置它的正确方法吗?

header('Authorization: AuthSub token="xxxxxx"');
header('location:https://www.google.com/accounts/AuthSubRevokeToken');

我正在尝试为此呼叫设置此网址的标头。但授权:AuthSub标头并未显示在FireFox NET面板的请求标头部分中。它用于显示请求。

有什么想法吗? 感谢名单。

我之前使用的是curl,但它似乎没有发出任何请求,因为我无法在FireFox的.NET面板中看到它。 代码如下:

$curl = curl_init(); 

    curl_setopt($curl, CURLOPT_URL,"https://www.google.com/accounts/AuthSubRevokeToken"); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FAILONERROR, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: AuthSub token="1/xxx"'
                    )); 
    $result = curl_exec($curl);  
    curl_close($curl);            
    echo 'hererer'.$result;exit; 

3 个答案:

答案 0 :(得分:1)

header设置响应标头,而不是请求标头。 (如果您尝试在其他地方发送HTTP请求,则无效。)

请注意手册中有关Remember that header() must be called before any actual output is sent, ...的内容。

在使用error_reporting(E_ALL);之前启用header(),看看这是否适合您。

答案 1 :(得分:1)

标题名称和值需要用一个冒号和一个空格分隔,所以位置“标题”是错误的,它应该是:

header('Location: https://www.google.com/accounts/AuthSubRevokeToken');

(以这种方式编写案例也很常见,但不是必需的)

接下来,header函数正在设置响应标头,而不是请求标头。所以你基本上使用了错误的工具。

在PHP中,您无法设置请求标头,这是客户端(例如浏览器)的一部分,而不是服务器。所以header在这里看起来不错。您使用的是哪个HTTP客户端?

答案 2 :(得分:1)

一个电话,就像使用CURL请求另一个页面一样? header()函数仅适用于Web浏览器< - >服务器通信。它不会影响服务器端脚本对其他Web服务器的任何请求。为此,您需要修改您正在使用的特定方法,例如卷曲或流。

对于卷曲,请参见CURLOPT_HTTPHEADER此处:http://php.net/curl_setopt