Javascript Fetch POST 请求在我的后端显示为 GET 请求(并停止任何工作)

问题描述 投票:0回答:1

这是我的帖子请求。它用于将用户的数据发送到后端 php 页面。我做了一些调试并且

    const fullusername = "<?php echo $to; ?>";
    const personontheline = sessionStorage.getItem('name');
    fetch('inc/AI2.php', {
        

    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: new URLSearchParams({
        fullname: fullusername, //variable
        personwhoclicked: personontheline //variable
    }) //continues to fetch errors

这是后端。它表明由于某种原因

$_SERVER['REQUEST_METHOD']
是一个 GET 请求。我不太擅长 php 或 javascript。由于某种原因它根本不起作用,我花了几个小时试图解决它。这可能是一些愚蠢的事情,哈哈。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //do stuff
    }
} else {
    // Handle invalid requests
    echo "Invalid request       ".$_SERVER['REQUEST_METHOD'];
    die();
}

我尝试将获取方法切换为 GET 方法,但这稍微修复了代码,因为我的代码无法识别 GET 方法的变量

if (isset($_GET['fullname']) AND isset($_GET['personwhoclicked'])) { //work } 
else{ echo "error"; }   

这就是 burp 套件在发布请求时的样子

这就是 burp 套件通过 GET 请求实现的效果

javascript php network-programming post get
1个回答
0
投票

我怀疑问题可能是自动重定向将 POST 请求转换为 GET。将重定向:“手动”添加到您的获取选项可能会阻止这种情况并让您直接深入了解响应。

下面是带有重定向选项的更新代码:

fetch('inc/AI2.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: new URLSearchParams({
        fullname: fullusername,
        personwhoclicked: personontheline
    }),
    redirect: 'manual'  // Prevents automatic redirects
}).then(response => {
    console.log(response); // Check the status and headers for redirect info
}).catch(error => console.error(error));
© www.soinside.com 2019 - 2024. All rights reserved.