私はWebアプリケーションを開発中です。私の主なアプリケーションはRESTアプリケーションです。従来のウェブ開発とは異なり、私のウェブサイトはPOSTアプリケーション、DELETEアプリケーション、PUTアプリケーション、GETデータに接続します。ウェブサイトがRESTアプリケーションにログインできない
Postman(https://www.getpostman.com/)と呼ばれるデスクトップアプリケーションを通じて自分のユーザー名とパスワードをRESTアプリケーションにPOSTしてから、アカウントデータを取得すると、正常に動作し、データを取得できます。
私のウェブサイトがcURLライブラリを使用してRESTアプリに接続するとき。
なぜ、同じRESTアプリケーションからデータを取得しているにもかかわらず、Postmanと私のWebサイトが異なる動作をする理由がわかりません。
セッションはRESTアプリケーションのみであるため、私のウェブサイトはネイティブセッションを使用しません。ここで
は私のウェブサイトの私の関数です:
function process_api_get($base_url,$extension)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $base_url . $extension,
CURLOPT_CUSTOMREQUEST => 'GET'
));
$resp = curl_exec($curl);
curl_close($curl);
// echo '<pre>';
// print_r($resp);
// exit;
return json_decode($resp);
}
function process_api_post($input,$base_url,$extension)
{
$obj = json_encode($input);
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $obj);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0');
curl_setopt($ch, CURLOPT_URL, $base_url . $extension);
//
if (isset($_COOKIE[session_name()]))
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.$_COOKIE[session_name()].'; path=/');
session_write_close();
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result);
}
function process_api_put($input,$base_url,$extension)
{
$obj = json_encode($input);
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $obj);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0');
curl_setopt($ch, CURLOPT_URL, $base_url . $extension);
if (isset($_COOKIE[session_name()]))
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.$_COOKIE[session_name()].'; path=/');
session_write_close();
$result = curl_exec($ch);
curl_close($ch);
session_start();
return json_decode($result);
}
function process_api_delete($input,$base_url,$extension)
{
$obj = json_encode($input);
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS, $obj);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $base_url . $extension);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result);
}
ようこそ。あなたが質問をして助けを受けるときには、離れるだけで済ませないか、将来的に助けを得ることができなくなります。これらの回答は、テストと書き込みに長い時間がかかります。私の答えが役に立つなら、それを選んでください。役に立たない場合は、不明な点、間違った点、欠けている点についてのフィードバックを残してください。 – BeetleJuice