JavaScript в HTML «ошибка» при отправке запроса

#javascript #json #coderunner

Вопрос:

Итак, я внес обновления в этот код, чтобы исправить некоторые проблемы, на которые указывалось в другом вопросе. Функция выполняется, но возвращает {«Состояние готовности»:0,»статус»:0,»statusText»:»ошибка»}. Я переключился с $.getJSON на $.ajax, чтобы я мог отправлять заголовки, чтобы, надеюсь, исправить ошибку, но она по-прежнему выдает мне ту же ошибку без особых подробностей.

 <HTML>
<head>
    <title>Ecobee API PIN TEST</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <script type="text/javascript">
        $(document).ready(function PINCode() {
            
            apiKey = 'kmkbJCrEUbMBpO2I6E90QeYcueAz1p00'
            
            // set all apiKey inputs to have apiKey value entered
            $(".apiKey").each(function() {
                $(this).val(apiKey);
            });
            
            var url = 'https://api.ecobee.com/authorize?response_type=ecobeePinamp;client_id='   apiKey   'amp;scope=smartWrite';
            $.ajax({
                dataType: "json",
                url: url,
                headers: { 'Access-Control-Allow-Origin': '*' },
                success: function(data) {
                    $("#authCode").val(data.code);
                    alert("JSON Ran");
                    var response = JSON.stringify(data, null, 4);
                    $('#response1').html(response);
                }
            })
//            $.getJSON(url,function(data) {
//                // set authCode to be code attribute of response
//                $("#authCode").val(data.code);
//                alert("JSON Ran")
//                var response = JSON.stringify(data, null, 4);
//                $('#response1').html(response);
//            })
            .fail(function(jqXHR, textStatus) {
                $('#response1').html("The following error was returned: <br><br>"   JSON.stringify(jqXHR)   "<p>Please Contact <b>M2 AV Consulting</b> at <a href=mailto:support@m2avc.com?subject='EcobeePINSupport'>support@m2avc.com</a>")
                console.log(textStatus);
            });
        })
    </script>
    <pre id="response1" class="code-json">(Response JSON will appear here...I hope.)</pre>
</body>
</HTML>
 

Комментарии:

1. Загляните в консоль инструментов разработки браузера и посмотрите, не является ли это ошибкой CORS. Если это так, вам нужно будет использовать прокси-сервер для выполнения запроса и не раскрывать свои учетные данные на стороне клиента

2. Похоже на то. Вот что я получаю: [Ошибка] Происхождение m2avconsulting.com не допускается с помощью Access-Control-Allow-Origin. [Ошибка] Не удается загрузить XMLHttpRequest api.ecobee.com/… из-за проверок контроля доступа. [Журнал] ошибка (api, строка 333) [Ошибка] Не удалось загрузить ресурс: Источник m2avconsulting.com не допускается с помощью Access-Control-Allow-Origin. (авторизация, строка 0)

3. Установка заголовков управления доступом в запросе бесполезна. Они должны быть установлены в ответ на удаленном сервере. Вам нужно будет использовать прокси-сервер либо на сервере, которым вы управляете, либо на стороннем сервисе