跨域资源共享
定义
命名空间:TouchSocket.Http
程序集:TouchSocket.Http.dll
一、说明
什么是跨域?简单来说,当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。那为什么会出现跨域问题呢?
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说 Web 是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页 面具有相同的协议(protocol),主机(host)和端口号(port)。
什么是CORS?跨源资源共享 (CORS) :
- 是一种 W3C 标准,可让服务器放宽相同的源策略。
- 不是一项安全功能,CORS 放宽 security。 API 不能通过允许 CORS 来更安全。 有关详细信息,请参阅 CORS 工作原理。
- 允许服务器明确允许一些跨源请求,同时拒绝其他请求。
- 比早期的技术(如 JSONP)更安全且更灵活。
二、使用方法
2.1 添加Cors服务
.ConfigureContainer(a =>
{
//添加跨域服务
a.AddCors(corsOption =>
{
//添加跨域策略,后续使用policyName即可应用跨域策略。
corsOption.Add("cors", corsBuilder =>
{
corsBuilder.AllowAnyMethod()
.AllowAnyOrigin();
});
});
})
提示
corsBuilder
可以通过With方法,添加更多的跨域设置。例如设置特定的源。
2.2 应用跨域策略
.ConfigurePlugins(a =>
{
//应用名称为cors的跨域策略。
a.UseCors("cors");
})
提示
UseCors()
的设定,会应用到插件访问的,之前的所有的http请求上。所以如果需要,可以将UseCors()
放置到最前项。