gpt4 book ai didi

asp.net - 如何从服务器端启用 CORS?

转载 作者:行者123 更新时间:2023-12-03 23:17:59 24 4
gpt4 key购买 nike

根据我在 Web API 方面的一点经验,同源策略是浏览器的策略,即浏览器不允许向其他主机而不是源发出请求。我想知道如何从服务器端启用 CORS(谈论 ASP.net Web API)?

这就是我在 webAPI 中启用 CORS 的方式

namespace WebService.Controllers
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods ...
}
}

如果 CORS 是浏览器的东西,那么从客户端启用它是否更合乎逻辑。任何人都可以清除这个

最佳答案

以下是对其工作原理的简短总结:浏览器是执行同源策略和跨源限制的地方。具体来说,浏览器会阻止前端 JavaScript 代码访问来自跨域请求的响应——除非请求服务器发送响应头 Access-Control-Allow-Origin在回应中。

换句话说,让浏览器放宽同源策略的方式是让服务器使用 Access-Control-Allow-Origin header 表明他们选择加入跨域请求。

因此,浏览器是应用或放松任何跨域限制的地方。

一个有助于说明其工作原理的案例是一个简单的跨域 POST .只要是跨域的POST没有任何自定义请求 header 会触发浏览器执行 CORS preflight OPTIONS request ,浏览器将继续发出请求,甚至是跨域请求。和服务器,POST发送到将继续并接受它,然后发送响应。

然后发生的是浏览器的跨域限制开始起作用的地方 - 因为如果 POST请求是使用 XHR 或 Fetch API 或来自某个 JavaScript 库的 Ajax 方法从前端 JavaScript 代码发送的,除非响应包含 Access-Control-Allow-Origin header ,浏览器将不允许前端代码访问响应(即使服务器接受了 POST 并且它成功了)。

无论如何,我希望以上内容有助于阐明在服务器中启用 CORS 支持的实际含义,以及它有什么影响,以及实际的策略执行是由浏览器执行的。

当然,以上所有只是描述了最简单的情况,其中没有请求的特征会触发浏览器执行 CORS preflight OPTIONS request .

但仍然在这种情况下,策略执行全部由浏览器执行——事实上更是如此,例如,浏览器将不允许 POST甚至将自定义 header 发送到服务器开始,除非服务器明确指示(在其对预检 OPTIONS 的响应中)服务器已选择接收包含该自定义 header 的跨域请求。

关于asp.net - 如何从服务器端启用 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807478/

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