ASP.NET Core微服务(三)——【跨域配置】


未跨域的错误提示:【No 'Access-Control-Allow-Origin' header is present on the requested resource. 】

解决的方法如下:

跨域的【Startup.cs】文件配置

1、声明跨域策略名称

//声明跨域策略名称
readonly string MyCorsPolicy = "CorsPolicy";

添加位置:

ASP.NET Core微服务(三)——【跨域配置】_微服务

2、引入跨域服务

//引入跨域服务
services.AddCors(options => options.AddPolicy(MyCorsPolicy, builder =>
{
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
services.AddControllers();
}));

添加位置:

ASP.NET Core微服务(三)——【跨域配置】_asp.net_02

3、允许跨域请求

   //允许跨域请求
app.UseCors();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers().RequireCors(MyCorsPolicy) ;
});

添加位置: 

ASP.NET Core微服务(三)——【跨域配置】_asp.net_03

4、跨域测试(采用JQuery的ajax直接测试):

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>跨域测试</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" />
</head>

<body>
<script>
$(function() {
$.ajax({
url: "http://localhost:5000/api/Test/GetInfo",
dataType: "json",
type: "get",
success: function(data) {
data.forEach(element => {
document.write(element.id);
document.write(element.createDate);
document.write(element.nickName);
document.write(element.introduce);
document.write("<br/>");
});
}
});
});
</script>
</body>

</html>

效果如下:

ASP.NET Core微服务(三)——【跨域配置】_跨域_04

成功跨域。

5、总结:

a)、跨域的三个配置分别的位置不同,请确定编写位置,本文有图片提示。

b)、本文直接做的【get】测试,如需【post】测试,请将【ajax的type值改为post】

希望此文对大家有所帮助,后续会编写

ASP.NET Core微服务(四)——【静态vue使用axios解析接口】、

ASP.NET Core微服务(五)——【vue脚手架解析接口】、

ASP.NET Core微服务(六)——【redis操作】、

ASP.NETCore微服务(七)——【docker部署linux上线】

等文章。

此文标题为ASP.NET Core微服务(二)——ASP.NET Core微服务(三)——【跨域配置】