[英]PHPSESSID= not carried in ajax jquery
我正在嘗試使用$ .ajax(jquery)對我的服務器(php)進行api調用。 我已經成功ping服務器,但是並不能驗證用戶是否已登錄(存儲在PHPSESSID中)。 這是一個跨域請求。
當我使用PHP從前端進行api調用時,它可以工作,因為cURL請求將PHPSESSID分配給CURLOPT_COOKIE。
這是我的網站www.foo.com上的$ .ajax代碼
$(document).on('click','#pickup_now', function(){
//testing ajax function for 'cpr.php'
$.ajax({
url: "https://app.foo.com/CPR.php",
data: {
PickupLatitude: PickupLatitude,
PickupLongitude: PickupLongitude,
PickupAddress: PickupAddress,
PickupAddress2: '',
PickupCity: PickupCity,
PickupState: PickupState,
PickupZipCode: PickupZipCode,
DropOffLatitude: '34.0335328',
DropOffLongitude: '-118.48099309999998',
DropOffAddress: '2227 Wilshire Boulevard',
DropOffAddress2: '',
DropOffCity: 'Santa Monica',
DropOffState: '5',
DropOffZipCode: '90403',
ShipmentDescription: document.getElementById('description').value,
ShipmentImage: document.getElementById('ShipmentImage').value,
EstimatedTime: '180',
EstimatedDistance: '1'
},
type: "POST",
success: function(data,status){
console.log("Data: " + data + "\nStatus: " + status);
console.log(userSession);
} //ends success function
});
});
返回:
Data: {"LoginValid":false}
Status: success
因此,我們知道它已成功ping通服務器。 這是https://app.foo.com/CPR.php上的代碼
public static function CPR($pickupLatitude, $pickupLongitude, $pickupAddress, $pickupAddress2, $pickupCity, $pickupState, $pickupZipCode,
$dropOffLatitude, $dropOffLongitude, $dropOffAddress, $dropOffAddress2, $dropOffCity, $dropOffState, $dropOffZipCode,
$shipmentDescription, $shipmentImage, $estimatedTime, $estimatedDistance)
{
$results = new fooCommon\Results();
if ($results->LoginValid = SessionInfo::GetInstance()->LoggedIn())
$results->AddMembers(fooCommon\SHELPER::CPR(SessionInfo::GetInstance()->UserID(), $pickupLatitude, $pickupLongitude, $pickupAddress, $pickupAddress2, $pickupCity, $pickupState, $pickupZipCode,
$dropOffLatitude, $dropOffLongitude, $dropOffAddress, $dropOffAddress2, $dropOffCity, $dropOffState, $dropOffZipCode,
$shipmentDescription, $shipmentImage, $estimatedTime, $estimatedDistance));
return $results;
}
$results->LoginValid = SessionInfo::GetInstance()->LoggedIn()
使用用戶的SESSION信息來驗證他們是否已登錄並獲取他們的信息。
這是在SessionInfo.php上找到的代碼
public function LoggedIn()
{
if (!isset($_SESSION["LoggedIn"]))
$this->SetLoggedIn(false);
return $_SESSION["LoggedIn"];
}
如何正確傳遞該PHPSESSID信息,以便SessionInfo::GetInstance()->LoggedIn()
知道要獲取它並驗證用戶信息?
TL; DR- >是否存在與cURL CURLOPT_COOKIE
等效的$ .ajax嗎? 當通過cURL執行此操作時,這似乎就是通過適當的渠道傳遞該信息的原因。
預先感謝大家!
頁面呈現時,將會話ID嵌入到隱藏的輸入元素中,即
<input type=hidden name=sessionid value='<? inject here ?>'/>
進行ajax調用時,請從隱藏的input元素中讀取值,並將其包含在要回發的數據中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.