[英]PHP Session ID / Session variable value changing on every request from react axios / ajax call
我剛剛開始使用 react js,並開始面臨一些客戶端系統的一些問題。 在將數據從 react js 發布到 php 文件時,使用(axios 或 ajax)session_id() 在每個請求/調用時重置和重新生成。 session 變量復位。 我已經嘗試了一些來自 stackoverflow 的解決方案,但沒有任何效果。我在我的本地主機和其他一些系統中遇到了這個問題。 但也可以與其他一些系統一起使用。 這就像使用 50% 的系統而不使用 50% 的系統。
但是,如果我做同樣的事情而沒有從正常的 html 文件與 ajax 到 php 文件反應 js。 session id 未重置或重新生成。
PHP 文件
<?php
session_start();
$session_val = session_id();
header("Access-Control-Allow-Origin: *");
echo $session_val;
?>
AJAX 來自 REACT JS 的調用
$.ajax({
url: "http://localhost/test.php",
type: "POST",
data: {
action: action,
},
success: function (data) {
},
error: function (jqXHR, text, errorThrown) {
console.log(jqXHR + " " + text + " " + errorThrown);
},
});
AXIOS 調用
axios
.post('http://localhost/test.php', this.state)
.then(response =>{
console.log(response.data);
})
.catch(
error => {
console.log(error)
});
看起來您的瀏覽器沒有發送帶有 AJAX 請求的 Cookie header(他們默認這樣做,但我不知道為什么它不發送)。
當您的 PHP 服務器發現沒有 Cookie header 時,它假定未設置 SESSONID 並創建一個新的,並指示您的客戶端將新的 SESSIONID 存儲在其 Z55E7DD3016CE4AC57B2ZA 中。 由於這個新的 SESSIONID 不會在下一個請求中發送,因此您的服務器再次假設相同的事情,並再次創建一個新的 SESSIONID。 而且這個過程每次都會發生。
要了解有關 cookies 工作原理的更多信息,您可以參考使用 HTTP Cookies 。
您可以手動獲取 cookies 並將其作為 Header 添加到 AJAX 請求中,如 so:
$.ajax({
url: "http://localhost/test.php",
type: "POST",
headers: {"Cookie": document.cookie},
data: {
action: action,
},
success: function (data) {
},
error: function (jqXHR, text, errorThrown) {
console.log(jqXHR + " " + text + " " + errorThrown);
},
});
AJAX object 的headers
屬性用於向您的 HTTP 請求添加額外的標頭。 在這里,我們獲取瀏覽器使用document.cookie
存儲的 cookies 並將其添加到請求標頭中的Cookie header 中。
讓我知道這是否解決了您的問題。
根據Shreyas Sreenivas的評論,我使用xhrFields: { withCredentials: true }用於 ajax 和
axios.post('https://example.com/file.php', this.state,{withCredentials: true}); 對於 axios 並且它有效。 但是發生了一些跨域請求被阻止的錯誤,需要修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.