Нет заголовка «Access-Control-Allow-Origin» присутствует ошибка с использованием bigcommerce api mvc - PullRequest
0 голосов
/ 09 ноября 2018

Я использую API большой коммерции для получения списка заказов, я пробовал много решений.

Вот ошибка, с которой я сталкиваюсь ..

api.bigcommerce.com / stores / 4jwabif3gj / v2 / orders.json? Search = false & nd = 1541740677952 & lines = 20 & page = 1 & sidx = & sord = asc: 1 Не удалось загрузить ресурс: сервер ответил со статусом 401 (не авторизован) Индекс: 1 Доступ к XMLHttpRequest в «https://api.bigcommerce.com/stores/4jwabif3gj/v2/orders.json?search=false&nd=1541740677952&rows=20&page=1&sidx=&sord=asc' от источника» http://localhost:62797' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control-Allow- Заголовок источника присутствует в запрашиваемом ресурсе.

HTML

<table id="JqGrid"></table>
<div id="JqGridPager"></div>

JQuery

<script type="text/javascript">

    jQuery(document).ready(function ($) {

        var $grid = $("#JqGrid");
        $grid.jqGrid({
            url: 'https://api.bigcommerce.com/stores/4jwabif3gj/v2/orders.json',
            ajaxGridOptions: { xhrFields: { withCredentials: true } }, 
            dataType: 'json',
            colNames: ['id', 'date_created', 'date_modified', 'date_shipped', 'status'],

            colModel: [
                { name: 'id', index: 'id', width: 10 },
                { name: 'date_created', index: 'date_created', width: 50, sorttype: 'date', datefmt: 'Y-m-d' },
                { name: 'date_modified', index: 'date_modified', width: 50, sorttype: 'date', datefmt: 'Y-m-d' },
                { name: 'date_shipped', index: 'date_shipped', width: 50, sorttype: 'date', datefmt: 'Y-m-d' },
                { name: 'status', index: 'status', width: 50 },
            ],
            caption: "Order list",
            pager: "#JqGridPager",
            loadBeforeSend: function (jqXHR) {
                jqXHR.setRequestHeader("X-Auth-Token", 'modebafppdxh9sd90zffehu9wwgpj3d', "X-Auth-Client", '535bnhhfkqblu7ebg1aq9r6kue1lgv6');
            },
            //ajaxGridOptions: {

            //    beforeSend: function (xhr) {
            //        xhr.setRequestHeader("X-Auth-Token", "modebafppdxh9sd90zffehu9wwgpj3d", "X-Auth-Client", "535bnhhfkqblu7ebg1aq9r6kue1lgv6");

            //    }
            //},
            viewrecords: true,
            width: 1100,
            height: 400
        });
        $grid.jqGrid('navGrid', '#JqGridPager', { edit: false, add: false, del: false })
    });
</script>

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

В зависимости от информации, к которой вы пытаетесь получить доступ, вы можете использовать запрос «Сервер-сервер» или API-интерфейсы Storefront.

В зависимости от вашего варианта использования сервер-сервер лучше всего подойдет. Краткий обзор различий между ними содержится в документации . Это должно помочь вам решить, какой из них лучше для вашего приложения.

Чтобы просто вернуть список заказов, вы можете использовать эту конечную точку API здесь . Для сбора данных заказа на витрине магазина вы можете использовать эту конечную точку здесь .

0 голосов
/ 09 ноября 2018

Согласно этому ответу в StackOverflow и этой теме на форуме поддержки BigCommerce API BigCommerce не поддерживает CORS. Это похоже на проблему безопасности, и делать запросы API на стороне клиента обычно не рекомендуется.

Рекомендуемый способ доступа к информации из API BigCommerce - выполнять вызовы API через безопасный сторонний сервер, а затем запрашивать этот сторонний сервер из вашего веб-приложения.

...