首页 > 解决方案 > 从 ssl 到非 ssl 服务器的 Ajax Post 请求

问题描述

因此,我编写了一些代码来执行对远程服务器的 ajax 发布请求并执行 ssh2 命令。发送请求的服务器具有有效的 ssl 证书,远程服务器没有域(只有 ip)或 ssl。响应总是被阻止并返回代码 500。有没有办法绕过这个?

function executeSSH($commandLines) {
    global $sshsshhost, $sshsshuser, $sshsshpass;

    $connection = ssh2_connect($sshsshhost, 22);
    ssh2_auth_password($connection, $sshsshuser, $sshsshpass);

    for($i = 0; $i < count($commandLines); $i++) {
        ssh2_exec($connection,  $commandLines[$i]);
    }

    ssh2_disconnect($connection);
}

if (isset($_POST['startBot'])) {
    $qport = $_POST['port'];
    executeSSH(['cd /home/botsv2/bot' . $qport . '/ && screen -d -m -S bot' . $qport . ' mono /home/botsv2/bot' . $qport . '/TS3AudioBot.exe']);
}
    $('#startBot').click(function (e) {
        e.preventDefault();
        $("#startBot,#stopBot,#restartBot,#deleteBot,#saveChanges").prop('disabled', true);

        $.ajax({
            type: "POST",
            crossDomain: true, // Also tried crossDomain = true
            dataType: "text",
            url: 'currentSite.php?uid=' + <?php echo $botID; ?>,
            beforeSend: function(request) {
                // Already tried with headers, but doesn't work
                request.setRequestHeader("Access-Control-Allow-Origin", "*");
                request.setRequestHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
                request.setRequestHeader("Access-Control-Max-Age", "1000");
                request.setRequestHeader("Access-Control-Allow-Headers", "Content-Type");
            },
            data: {
                startBot: "true",
                port: <?php echo $qport; ?>
            },
            success: function () {
                $("#stopBot,#restartBot,#deleteBot,#saveChanges").prop('disabled', false);
            },
            error: function(xhr, status, error) {
                alert(xhr.responseText);
            }
        });
    });

标签: phpajaxhttpsslhttps

解决方案


推荐阅读