REACT -Axios Post响应没有cookie
#react #php #symfony #axios

大家好,
我目前正在与后端的Frontend和Symfony PHP框架合作。现在,我试图通过邮政请求通过React登录后端。到目前为止,这一切都很好。我得到了204代码,然后登录。关于Postman,并带有相同的请求,我可以作为基于会话的身份验证的曲奇响应。关于php和卷发,我从后端得到了cookie的回应

Postman response

卷发的响应看起来像这样:

{'Date': 'Sat, 08 Oct 2022 10:14:45 GMT', 'Server': 'Apache', 'Cache-Control': 'max-age=0, must-revalidate, private', 'Link': '<http://127.0.0.1:8000/api/docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"', 'X-Debug-Token': 'cca986', 'X-Debug-Token-Link': 'http://127.0.0.1:8000/_profiler/cca986', 'X-Robots-Tag': 'noindex', 'Expires': 'Sat, 08 Oct 2022 10:14:45 GMT', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding', 'Set-Cookie': 'PHPSESSID=2606e8ab1c7ded0d30bb61890f4a6ea0; path=/; secure; httponly; samesite=lax', 'Location': '/api/users/11', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive'}

php代码:

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'http://127.0.0.1:8000/login',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{
        "email": "webmaster",
        "password": "123456"
    }',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json',
    ),
));
$response = curl_exec($curl);

我不在卷发变体中使用"CURLOPT_HEADER => true时,“ cookie和详细的响应将不再显示。

现在,我已经尝试了所有选项,以使cookie在标题中获得React和Axios,不幸的是,对于我来说,甚至不可能以某种方式从后端获得cookie或其他响应。这是我当前正在使用的代码。

let data = {email:"webmaster", password:"123456"}
let headers = {
  headers: {'Content-Type': 'application/json'}
};


const axiosConfig = {
  headers: {
    'content-Type': 'application/json',
    "Accept": "/",
    "Cache-Control": "no-cache",
    "Access-Control-Allow-Origin": "*",
    // "Cookie": document.cookie
  },
  credentials: "same-origin"
};
axios.defaults.withCredentials = true;
const res = await axios.post('http://127.0.0.1:8000/login', data, axiosConfig)
    .catch(response =>{
      console.log(response.getAll());
})

React response after Post request

不幸的是,我不知道我是否忘记了邮政请求中的任何内容,或者Axios不是最适合这种请求的。

我感到惊讶的是,在Postman和PHP中,没有问题可以得到cookie。不幸的是,我直到最近才开始使用ReactJ,并且在该领域几乎没有经验。

在周末我也尝试了Python,也没有问题。因此,我认为这是我的ReactJS代码的问题。

非常感谢您的帮助!

最好,基督徒