Cookie授权的CURL POST请求

时间:2015-05-04 21:12:11

标签: php authentication curl session-cookies

我正按照以下说明尝试发布:

资源信息

HTTP方法:POST

内容类型:application / json

接受:application / json

验证

注意:需要Cookie或授权标头。

Cookie:SESSION_ID = 108259418ff689fc

授权:基本WVdECUMScUZGGGBGOlhVODdGNXFkR253SA ==

示例请求

POST https://sandbox.domain.com/api/authenticationTokens

Cookie:SESSION_ID = cdf5b882667d24a2

"是什么意思?需要Cookie或授权标头。"我不明白如何阅读/解释和实施"示例请求"。

这是我到目前为止所做的:

    $parameters = array();

    $curl = curl_init();
    $header = array( "Accept: application/json", "Cookie: _SESSION_ID=cdf5b882667d24a2" );
    curl_setopt( $curl, CURLOPT_URL, "https://sandbox.domain.com/api/authenticationTokens" );
    curl_setopt( $curl, CURLOPT_POST, count( $parameters ) );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $parameters ) );
    curl_setopt( $curl, CURLOPT_HTTPHEADER, $header );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, false );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
    $response = curl_exec( $curl );
    curl_close( $curl );

1 个答案:

答案 0 :(得分:1)

上面的示例使用cookie身份验证。 Cookie在请求标头中发送。要使用cookie身份验证,您需要以某种方式获取会话ID并将其替换为代码。我猜你需要以某种方式先打开一个会话,然后在cookie中使用该值,但这似乎是一种奇怪的方式来验证API。另外,我不确定领先的下划线是否是拼写错误。如果它不起作用,您可能想要在没有下划线的情况下尝试:

"Cookie: SESSION_ID=cdf5b882667d24a2"

或者,如果您想使用HTTP身份验证,则需要提供类似

的用户名和密码
curl_setopt( $curl, CURLOPT_USERPWD, 'username:password' );

如果您拥有的只是一个值,则可能会在password部分中将用户名留空:

curl_setopt( $curl, CURLOPT_USERPWD, ':WVdECUMScUZGGGBGOlhVODdGNXFkR253SA==' );