Реагировать на проблему CORS с получением для запроса POST - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть API, который работает на http://localhost: 10080 / v1 [Я не могу изменить код API] . Я создал приложение реагирования для отправки некоторых данных в этот API. Приложение React запускается на http://localhost: 3000

handleSubmit(event){
    event.preventDefault()
    const base_url="http://localhost:10080/v1/"
    const data={<<some json data>>}
    let headers = new Headers();
    headers.append('Content-Type', 'application/json')
    fetch(base_url,{
        method:'POST',
        mode: 'no-cors',
        header:headers,
        body: JSON.stringify(data),

    })

}

Когда я изменяю mode на cors, я получаю блокировку запроса о происхождении. Когда я изменяю mode на no-cors, я получаю ошибку 415-Unsupported Media Type, потому что, когда мы отключаем cors, мы не можем изменить заголовки запроса (приведенные в других ответах и ​​документации). Как преодолеть это и отправить запрос на этот API?

Ответы [ 5 ]

0 голосов
/ 24 февраля 2020

Попробуйте следующий код для динамического связывания RadTreeView и ContextMenu с возможностью редактирования, удаления и добавления функций.

JS:

<script type="text/javascript">
    function OnClientContextMenuItemClicking(sender, args)
     {
        var menuItem = args.get_menuItem();
        var treeNode = args.get_node();
        menuItem.get_menu().hide();
        switch (menuItem.get_value())
         {
            case "edit":
                treeNode.startEdit();
                break;
         }
     }
</script>

Надеюсь, это поможет,

0 голосов
/ 24 февраля 2020

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

Ваш локальный API работает на localhost: 10080 и не позволяет CORS, поэтому он заблокирует все, что не приходит от localhost: 10080.

Отсюда два варианта: либо ваш локальный API-интерфейс допускает некоторые параметры и разрешает CORS, либо есть способ обслуживать ваш веб-интерфейс из вашего API (и, следовательно, иметь тот же источник ).

См. Этот ресурс о серверной части CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control

0 голосов
/ 24 февраля 2020

Я предполагаю, что "http://localhost: 10080 / v1 / " - это ваш бэкэнд API, если это приложение express, гарантирующее, что у вас установлены cors.

0 голосов
/ 24 февраля 2020

Вы можете попытаться добавить прокси в свой пакет. json:

   "proxy": "http://localhost:10080"

Для получения дополнительной информации о моем исследовании, чтобы попытаться ответить на ваш вопрос, вы можете найти этот сайт

0 голосов
/ 24 февраля 2020
var cors = require('cors');
var request = require('request-promise');
var express = require('express');
var app = express();
var server = app.listen('YOUR PORT', function(){console.log('Listening port 3000')});
app.use(cors());
app.get('/exchangeInfo', function (req,res) {
    request({
        method: 'GET',
        url: 'YOUR API',
        resolveWithFullResponse: true,
    }).then(r => {
        res.send(JSON.parse(r.body));
    }).catch()
});

Вы можете использовать приведенный выше код на вашем локальном компьютере для запуска локального сервера и преодоления коров, или вы можете использовать chrome плагин https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc?hl=en-GB

...