gpt4 book ai didi

javascript - AngularJS $http.post 不适用于 Chrome,仅适用于 IE

转载 作者:行者123 更新时间:2023-11-28 07:30:25 25 4
gpt4 key购买 nike

我正在尝试将一个简单的 JSON 对象发布到我的本地 asp.net web.api 服务。

这是一个和平的代码。

    createTable: function (table) {
var res = $http.post('http://localhost:50827/api/v0.1/xxxx/create-some-table', table);
res.success(function (data, status, headers, config) {
alert("Sent : " + JSON.stringify({ data: data }));
});
res.error(function (data, status, headers, config) {
alert("failure message: " + JSON.stringify({ data: data }));
});
}

Asp.Net Web Api 启用了 Cors,这种和平的代码可以很好地与 Internet Explorer 配合使用。但谷歌的 Chrome 留下了错误:选项:http://localhost:50827/api/v0.1/xxxx/create-some-table 404(未找到)

同一个 webapi Controller 还有一些其他 GET 方法,并且运行良好。

有什么想法吗?

感谢任何帮助。

巴甫洛

最佳答案

因此,这似乎是一个已知问题,即 Chrome 在发送实际的跨源请求之前使用 OPTIONS 动词发送“飞行前”请求。

在某些情况下,它不会发送预检请求,但不幸的是,发送 JSON 不是其中一种情况。

您似乎没有设置 ASP.NET WebAPI 服务器来处理这些类型的飞行前检查请求。可能是因为它显然不是默认启用支持的。

幸运的是,网络上有很多帮助可以帮助您解决此问题。这里有两个链接可以帮助您入门。

相关 StackOverflow 问题: AJAX in Chrome sending OPTIONS instead of GET/POST/PUT/DELETE?

这似乎是 how to configure CORS properly if you are using ASP.NET WebAPI 2 上的一个有用的页面。 .

哦,我假设如果预检请求失败,Chrome 将不会执行正确的 CORS 请求。在我的快速研究中,我没有看到任何地方可以证实或否认这一点,但这对我来说是合乎逻辑的,因为飞行前请求的全部目的是找出服务器支持哪种 CORS 请求,或者如果完全支持的话。

关于javascript - AngularJS $http.post 不适用于 Chrome,仅适用于 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29186881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com