asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)
这一节主要讲如何测试跨域问题
你可以直接在官网下载示例代码,也可以自己写,我这里直接使用官网样例进行演示
样例代码下载:
Cors
一.提供服务方,这里使用的是API
1.创建一个API项目。或者直接下载样例代码
2.像之前讲的那样设置允许CORS,例如:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseHsts();}// Shows UseCors with CorsPolicyBuilder.app.UseCors(builder =>{builder.WithOrigins("http://example.com","http://www.contoso.com","https://localhost:44375","https://localhost:5001");});app.UseHttpsRedirection();app.UseMvc(); }
使用的时候,注意 WithOrigins("https://localhost:<port>"); 这个地址替换为客户端地址(即调用方:这里指部分Razor代码)
二.客户端,这里指调用方(页面中js调用),这里指Razor部分的代码
1.创建一个web 应用(Razor pages 或者 mvc )。样例用的Razor Pages 。
2.在index.cshtml中增加如下代码
@page @model IndexModel @{ViewData["Title"] = "Home page"; }<div class="text-center"><h1 class="display-4">CORS Test</h1> </div><div><input type="button" value="Test" onclick="requestVal('https://<web app>.azurewebsites.net/api/values')" /><span id='result'></span> </div><script>function requestVal(uri) {const resultSpan = document.getElementById('result');fetch(uri).then(response => response.json()).then(data => resultSpan.innerText = data).catch(error => resultSpan.innerText = 'See F12 Console for error');} </script>
这里再多说一下,我的操作流程
首先,下载样例代码;
然后,在同一个解决方案中,导入Cors样例代码,如图
然后,可以先把解决方案设置为多个启动项目,启动,看下ClientApp的URL和WebAPI的URL
得到,我的url 分别如下:
ClientApp http://localhost:65317/ WebApi http://localhost:65328/
先停止运行,分别设置api的withOrigin和client页面中的地址,代码如下:
WebAPI中的 StartupTest (这个跟Program使用的StartUp文件有关,样例代码中使用的StartUpTest)
// Shows UseCors with CorsPolicyBuilder.app.UseCors(builder =>{builder.WithOrigins("http://example.com","http://www.contoso.com","https://localhost:44375","http://localhost:65317");});
ClientApp中的Index.cshtml文件代码如下:
@page @model IndexModel @{ViewData["Title"] = "Home page"; }<div class="text-center"><h1 class="display-4">CORS Test</h1> </div><div><h3>Test results:</h3><span id='result'></span> </div><div><input type="button" value="Test Widget 1"onclick="requestVal('https://webapi123.azurewebsites.net/api/widget/1')" /><input type="button" value="Test All Widgets"onclick="requestJson('https://webapi123.azurewebsites.net/api/widget')" /><input type="button" value="Test All Val"onclick="requestJson('https://webapi123.azurewebsites.net/api/values')" /><input type="button" value="Test Val 1"onclick="requestVal2('https://webapi123.azurewebsites.net/api/values/1')" /><input type="button" value="Test Val 2"onclick="requestVal2('http://localhost:65328/api/values')" /><input type="button" value="Test Val 3"onclick="requestJson('http://localhost:65328/api/values')" /> </div><script>function requestJson(uri) {const resultSpan = document.getElementById('result');fetch(uri).then(response => response.json()).then(data => resultSpan.innerText = data).catch(error => resultSpan.innerText = 'See F12 Console for error');} </script><script>function requestVal2(uri) {const resultSpan = document.getElementById('result');fetch(uri).then(response => response.text()).then(data => resultSpan.innerText = data).catch(error => resultSpan.innerText = 'See F12 Console for error');} </script>
再运行,测试
发现当WebApi中的 WithOrigins 设置正确时,不会报跨域问题,
否则,报跨域问题。
跨域错误截图
如有疑问,可以参考网址:
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2#cors-policy-options
转载于:https://www.cnblogs.com/Vincent-yuan/p/10801517.html
asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)相关推荐
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...
- 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」
原文:4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. HTTP请求过程 这里展示整 ...
- asp.net core系列 38 WebAPI 返回类型与响应格式--必备
一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) Ac ...
- 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...
- ASP.NET CORE系列【一】搭建ASP.NET CORE项目
原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug ...
- asp.net core 系列 18 web服务器实现
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...
- asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core
0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...
- .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...
0.前言 在之前的几篇中,我们大概介绍了如何创建一个http://asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. ...
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...
最新文章
- win7右键新建文件夹不见了
- Java学习笔记11
- ABP 重写主键ID
- Endnote X9安装教程
- 兼容 .NET Core3.0, Natasha 框架实现 隔离域与热编译操作
- c#geckofx文件流下载
- python全栈学习总结三:函数学习
- mysql show 存储过程_mysql 存储过程 show errors
- 团队第一阶段冲刺——第九天
- selenium中录制拖拽动作
- 【python】导入自定义模块
- java 内存使用过高_Java服务器内存和CPU占用过高的原因
- python创建字符串数组_用zeep创建一个字符串数组参数?
- 计算机毕业设计工作周记,电子及计算机毕业设计周记-20210628114255.docx-原创力文档...
- U盘制作成启动盘后容量变小
- 如何用电脑下载网页中的视频?
- My SQL 安装配置
- Praat脚本-006 | 批量修改删除复制某一层
- matlab ssd检测,基于SSD神经网络的违章停车车辆实时检测方法与流程
- windows安装linux
热门文章
- 测试思想-验收测试 关于验收测试
- pap与chap协议
- XAF 如何使用复合主键和复合外键
- CLR via C# 3 读书笔记(5):第1章 CLR执行模型 — 1.5 本地代码生成器工具:NGen.exe...
- 9.29 csp-s模拟测试55 联+赛+题
- OpenCV---ROI(region of interest)和泛洪填充
- javascript 容错处理代码(屏蔽js错误)
- [译]快照技术综述 Ⅰ
- Unity Application Block 1.0系列文章
- Deppin系统 Liunx显示器分辨率异常解决方法