XmlHttpRequest POST 方法在 IE11 中失败,状态代码为 400

XmlHttpRequest POST method fails with status code 400 in IE11

我有一个包含 JavaScript 方法的 React 应用程序,该方法将数据发布到服务器方法。这种方法在阳光下的每个浏览器中都可以正常工作......除了 IE11(我知道令人震惊)。不幸的是,IE11 支持是该项目的要求。

IIS 日志显示 400(错误请求)HTTP 状态代码。

我选择不使用 fetch(),因为它与 IE11 不兼容,我宁愿避免使用外部库,如 axios 或 jQuery 来为单个浏览器使用单个方法。

我尝试了一些 Content-Type header 值(application/json 和 x-url-form-encoded),还尝试了其他各种 header 可能会也可能不会相关(Pragma、CORS - 即使它不是 cross-origin、Cache-Control 等)。

handleSubmit(event) {
    const booking = {
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3',
    };

    const xhr = new XMLHttpRequest();
    const url = "api/Booking/AddBooking";

    xhr.open("POST", url);
    xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    xhr.send(JSON.stringify(booking));

    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);

            this.setState({
                bookingResponse: response,
                showModal: true
            });
        }
    }
    event.preventDefault();
}

我知道外部库可以与 IE11 一起使用,所以一定有办法用 vanilla JavaScript 解决这个问题,我只是找不到它是什么。有什么想法吗?

该问题与某些变量值有关。我使用的是 ES6 字符串插值(即反引号),这在 IE 中不受支持。