这一节主要讲如何测试跨域问题

你可以直接在官网下载示例代码,也可以自己写,我这里直接使用官网样例进行演示

样例代码下载:

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)相关推荐

  1. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  2. 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」

    原文:4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. HTTP请求过程 这里展示整 ...

  3. asp.net core系列 38 WebAPI 返回类型与响应格式--必备

    一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) Ac ...

  4. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  5. ASP.NET CORE系列【一】搭建ASP.NET CORE项目

    原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug ...

  6. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  7. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...

  8. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...

    0.前言 在之前的几篇中,我们大概介绍了如何创建一个http://asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. ...

  9. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

最新文章

  1. win7右键新建文件夹不见了
  2. Java学习笔记11
  3. ABP 重写主键ID
  4. Endnote X9安装教程
  5. 兼容 .NET Core3.0, Natasha 框架实现 隔离域与热编译操作
  6. c#geckofx文件流下载
  7. python全栈学习总结三:函数学习
  8. mysql show 存储过程_mysql 存储过程 show errors
  9. 团队第一阶段冲刺——第九天
  10. selenium中录制拖拽动作
  11. 【python】导入自定义模块
  12. java 内存使用过高_Java服务器内存和CPU占用过高的原因
  13. python创建字符串数组_用zeep创建一个字符串数组参数?
  14. 计算机毕业设计工作周记,电子及计算机毕业设计周记-20210628114255.docx-原创力文档...
  15. U盘制作成启动盘后容量变小
  16. 如何用电脑下载网页中的视频?
  17. My SQL 安装配置
  18. Praat脚本-006 | 批量修改删除复制某一层
  19. matlab ssd检测,基于SSD神经网络的违章停车车辆实时检测方法与流程
  20. windows安装linux

热门文章

  1. 测试思想-验收测试 关于验收测试
  2. pap与chap协议
  3. XAF 如何使用复合主键和复合外键
  4. CLR via C# 3 读书笔记(5):第1章 CLR执行模型 — 1.5 本地代码生成器工具:NGen.exe...
  5. 9.29 csp-s模拟测试55 联+赛+题
  6. OpenCV---ROI(region of interest)和泛洪填充
  7. javascript 容错处理代码(屏蔽js错误)
  8. [译]快照技术综述 Ⅰ
  9. Unity Application Block 1.0系列文章
  10. Deppin系统 Liunx显示器分辨率异常解决方法