NET Core接口跨域问题

2022年01月15日 阅读数:6
这篇文章主要向大家介绍NET Core接口跨域问题,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、什么是跨域html

跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则容许相互访问。也就是说JavaScript只能访问和操做本身域下的资源,不能访问和操做其余域下的资源。跨域问题是针对JS和ajax的,html自己没有跨域问题。ajax

查看浏览器开发者工具Console报错:跨域

Failed to load http://a.a.com:8080/A/FromServlet?userName=123: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://b.b.com:8080' is therefore not allowed access.浏览器

http://www.abc.com/a/b 调用 http://www.abc.com/d/c(非跨域)app

http://www.abc.com/a/b 调用 http://www.def.com/a/b (跨域:域名不一致)工具

http://www.abc.com:8080/a/b 调用 http://www.abc.com:8081/d/c (跨域:端口不一致)ui

http://www.abc.com/a/b 调用 https://www.abc.com/d/c (跨域:协议不一样)code

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

htm

 

3、解决方案blog

接口跨域(接口跨域的话在Startup.cs文件中配置)

public void ConfigureServices(IServiceCollection services)
{

     services.AddCors(option =>
                      option.AddPolicy(_defaultCorsPolicyName, policy =>
                      policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())
     );

}

AllowAnyHeader()--确保策略容许任何标头。

AllowAnyMethod()-- 确保策略容许任何方法。

AllowAnyOrigin()--确保策略容许任何来源。

AllowCredentials()-- 将策略设置为容许凭据。

 

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{

     app.UseCors(_defaultCorsPolicyName);//启动 _defaultCorsPolicyName的程序!