首页 > 解决方案 > 解决 cors 问题后,虚拟机上关于 ajax 的帖子返回错误 500,请求失败

问题描述

我正在尝试从运行 virtualbox windows 7 的虚拟机在服务器上进行 POST。并且服务器在同一台机器上本地运行,但在 linux 上。最初它有 CORS 问题,然后我从https://chrome.google.com/webstore/detail/allow-control-allow-origi/下载了 CORS chrome 扩展 'Allow-Control-Allow-Origin:', '*' nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=pt-BR

下载 chrome 扩展后,cors 问题停止了。但现在出现在我面前的是消息:POST http://servidor.hanbai:8081/api/aa/v1/pedidos 500 (Request failed.)

除此之外,唯一的消息是警告说:Cross-Origin Read Blocking (CORB) blocks cross-origin response http://servidor.hanbai:8081/api/aa/v1/pedidos with MIME type application/vnd.sun。 wadl+xml。有关详细信息,请参阅https://www.chromestatus.com/feature/5629709824032768 。

但是当我尝试使用 POSTMAN 时,没有出现任何问题。可能是什么?

function enviaParaHanbai(pedido) {
console.log(pedido);
let urlPedidoCriado;
$.ajax({
        type: "POST",
        url: "http://servidor.hanbai:8081/api/aa/v1/pedidos",
        data: JSON.stringify(pedido),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',

        },
        success: function(data, status, request) {
            console.log(data);
            console.log(status);
            console.log(request);
            urlPedidoCriado = request.getResponseHeader('location');
            console.log(urlPedidoCriado);
            const regex = /(?<=pedidos\/).*$/gi;
            let match = regex.exec(urlPedidoCriado);
            let idPedidoCriado = match[0];
            console.log(idPedidoCriado);
            renderizaDivPedidoRealizadoComSucesso(idPedidoCriado);
        },
        error: function (data, status, request) {
            console.log(data);
            console.log(request);
            console.log(status);
            console.log("erro no envio do pedido para o hanbai");
        }
});
}

标签: javascriptjsonajaxpost

解决方案


而不是 Chrome 扩展来启用 CORS,使用本指南来帮助您将标头添加到您的服务器 ( https://www.w3.org/wiki/CORS_Enabled )。至于错误,请尝试dataType在您的 ajax 调用中添加参数并指定数据。除此之外,安装 Fiddler 并调试它。希望有帮助


推荐阅读