热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NET6之MiniAPI(十五):跨域CORS(下)

前一篇的跨域请求的方式是松宽的方式,毕竟跨域有安全风险,应尽量少的允许访问必要资源,本篇分别从请求方法,请求头和请求凭据方面了解跨域设置。请求方法:api项目,get,post

  前一篇的跨域请求的方式是松宽的方式,毕竟跨域有安全风险,应尽量少的允许访问必要资源,本篇分别从请求方法,请求头和请求凭据方面了解跨域设置。

请求方法:

api项目,get,post是默认访问,这里只设置了PUT允许访问

using Microsoft.AspNetCore.Cors;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options
=>
{
options.AddPolicy(name:
"Policy2",
builder
=>
{
builder
.WithOrigins(
"http://localhost:5280")
.WithMethods(
"PUT");
});
});
var app = builder.Build();
//注意,这里是没有策略名称的
app.UseCors();
app.MapGet(
"/test2", [EnableCors("Policy2")] () => "get的结果");
app.MapPost(
"/test2", [EnableCors("Policy2")] () => "post的结果");
app.MapDelete(
"/test2", [EnableCors("Policy2")] () => "delete的结果");
app.MapPut(
"/test2", [EnableCors("Policy2")] () => "put的结果");
app.Map(
"/test2", [EnableCors("Policy2")] () => "map全部");
app.Run();

页面项目:

@page
@model IndexModel
@{
ViewData[
"Title"] = "Home page";
}

class="text-center">

class="display-4">欢迎学习MiniAPI

本例是跨域知识的分享。


"test2-get">

"test2-post">

"test2-delete">

"test2-put">


@section Scripts{

}

运行结果,delete被拒了

 

 

 

请求Header

api项目,设置是所有请求方法通过

using Microsoft.AspNetCore.Cors;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options
=>
{
options.AddPolicy(name:
"Policy3",
builder
=>
{
builder.WithOrigins(
"http://localhost:5280")
.WithHeaders(
"x-cors-header")
.AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors();
app.MapGet(
"/test3", [EnableCors("Policy3")] () => "get的结果");
app.MapPost(
"/test3", [EnableCors("Policy3")] () => "post的结果");
app.MapDelete(
"/test3", [EnableCors("Policy3")] () => "delete的结果");
app.MapPut(
"/test3", [EnableCors("Policy3")] () => "put的结果");
app.Map(
"/test3", [EnableCors("Policy3")] () => "map全部");
app.Run();

页面项目

@page
@model IndexModel
@{
ViewData[
"Title"] = "Home page";
}

class="text-center">

class="display-4">欢迎学习MiniAPI

本例是跨域知识的分享。


"test3-get">

"test3-post">

"test3-delete">

"test3-put">


@section Scripts{

}

运行结果,delete失败了,因为在delete请求中,夹带了x-key的header,所以没有通过

 

 

 请求凭据


凭据需要在 CORS 请求中进行特殊处理。 默认情况下,浏览器不会使用跨域请求发送凭据。 凭据包括 COOKIE s 和 HTTP 身份验证方案。 若要使用跨域请求发送凭据,客户端必须设置 XMLHttpRequest.withCredentials 为 true


api项目

using Microsoft.AspNetCore.Cors;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options
=>
{
options.AddPolicy(name:
"Policy4",
builder
=>
{
builder.WithOrigins(
"http://localhost:5280")
.AllowCredentials()
.AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors();
app.MapGet(
"/test4", [EnableCors("Policy4")] () => "get的结果");
app.MapPost(
"/test4", [EnableCors("Policy4")] () => "post的结果");
app.MapDelete(
"/test4", [EnableCors("Policy4")] () => "delete的结果");
app.MapPut(
"/test4", [EnableCors("Policy4")] () => "put的结果");
app.Map(
"/test4", [EnableCors("Policy4")] () => "map全部");
app.Run();

页面项目:

@page
@model IndexModel
@{
ViewData[
"Title"] = "Home page";
}

class="text-center">

class="display-4">欢迎学习MiniAPI

本例是跨域知识的分享。


"test4-get">

"test4-post">

"test4-delete">

"test4-put">


@section Scripts{

}

运行结果:

 

 

 如果除掉api项目中的凭据

options.AddPolicy(name: "Policy4",
builder
=>
{
builder.WithOrigins(
"http://localhost:5280")
.AllowAnyMethod()
;
});

运行结果:

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

 



****欢迎关注我的asp.net core系统课程****







《asp.net core精要讲解》 https://ke.qq.com/course/265696







《asp.net core 3.0》 https://ke.qq.com/course/437517







《asp.net core项目实战》 https://ke.qq.com/course/291868







《基于.net core微服务》 https://ke.qq.com/course/299524



推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
author-avatar
ccer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有