设置OAuth授权头的正确方法


Right way to set the OAuth Authorization header?

我想为url xyz.com设置一个请求头这是在php中设置它的正确方法吗?

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

我正在尝试为一个调用设置这个URL的标题。但是Authorization: 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; 

header设置响应标头,而不是请求标头。(如果您试图在其他地方发送HTTP请求,它将不起作用。)

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

在使用header()之前打开error_reporting(E_ALL);,看看这是否是您的问题。

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

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

(这种情况也很常见,但不需要)

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

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

调用,如使用CURL请求另一个页面?header()函数只适用于web-browser<>服务器通信。它不会影响服务器端脚本对其他web服务器的任何请求。为此,你需要修改你正在使用的特定方法,例如curl或streams。

关于curl,请参见CURLOPT_HTTPHEADER: http://php.net/curl_setopt