0

我有一个在http://localhost:10080/v1 [我无法更改 api 的代码] 上运行的 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),

    })

}

当我更改为时modecors我的跨域请求被阻止。当我更改mode为 时no-cors,我收到415-Unsupported Media Type错误,因为当我们禁用 cors 时,我们无法更改请求标头(在其他答案和文档中给出)。如何克服这一点并向该 api 发送发布请求?

4

6 回答 6

1

使用 CMD 在您的 Node 应用程序中运行“npm install cors”,然后在您的节点应用程序的 index.js 文件中添加以下代码。

const cors = require('cors');

app.use(cors());

于 2021-01-17T21:21:48.123 回答
1

您可以尝试在 package.json 中添加代理:

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

有关我的研究的更多信息以尝试回答您的问题,您可以找到此网站

于 2020-02-24T09:06:59.850 回答
1

尝试使用以下代码动态绑定 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>

希望这可以帮助,

于 2020-02-24T10:40:46.513 回答
0
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()
});

您可以在本地使用上述代码来运行本地服务器并克服 cors,或者您可以使用 chrome 插件https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc?hl=en-国标

于 2020-02-24T09:03:19.393 回答
0

我只能猜测,但在我看来,如果不更改本地 API,则无法解决此问题。

您的本地 api 在 localhost:10080 上运行并且不允许 CORS,因此它将阻止所有不是来自 localhost:10080 的内容。

从那里,这两个选项是您的本地 API 允许某些选项并允许 CORS,或者有一种方法可以从您的 API 为您的前端提供服务(因此具有相同的来源)。

请参阅有关 CORS 服务器端的资源:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control

于 2020-02-24T09:17:34.013 回答
0

我假设“ http://localhost:10080/v1/ ”是您的后端 API,如果它是一个快速应用程序,请确保您安装了 cors。

于 2020-02-24T09:06:14.457 回答