master
bicijinlian 4 years ago
parent a30853f7be
commit c9cfb66309

@ -1,6 +1,8 @@
# CORS(跨域资源共享)
> 请先认真阅读以下文档
[*跨源资源共享*](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS) [ASP.NET Core 启用CORS](https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-3.1)
## 问题由来
> 浏览器的同源策略:出于安全考虑,浏览器限制了不周源
@ -8,8 +10,8 @@
## 原理
![原理](Assets/CORS原理.png)
> 客户端:浏览器请求时,请求头携带上 Origin 标签(只包含请求站点信息,不包含路径信息。比如 http://localhost:5002),一般由浏览器或请求程序自动判断是否跨域而自动设置,无需人工参与,但是为了方便测试等,也可以强制添加。
> 客户端:浏览器请求时,请求头携带上 Origin 标签(只包含请求站点信息,不包含路径信息。比如 http://localhost:5002),一般由浏览器或请求程序自动判断是否跨域而自动设置,无需人工参与,但是为了方便测试等,也可以强制添加。
> 服务端 asp.net core 设置CORS后如果请求头携带有 Origin 标签则在响应头中添加CORS标签明确浏览器可以跨域。
## 坑一服务端设置好Cors后直接访问、Swagger、PostMan等工具测试时响应头中并不返回 Cors相关标头
@ -17,10 +19,15 @@
## 测试CORS
### 先确保非跨域时正常避免非跨域问题引发CORS错误
> 跨域请求时只要响应头不包含跨域信息则浏览器控制台优先报CORS错误即使是因为404、5xx服务端异常等原因。所以非跨域问题也能引起跨域报错。
> 跨域请求时只要响应头不包含跨域信息则浏览器控制台优先报CORS错误即使是因为404、5xx服务端异常等原因。所以非跨域问题也能引起跨域报错。
### Postman、Fiddler .net client 等客户端测试
> 使用Postman、Fiddler、.net clien等第三方客户端测试CORS时要注意因为在进行请求时可能不会自动加跨域请求头Origin所以默认是非跨域请求确保跨域的话要手动加Origin请求标头。
> 使用Postman、Fiddler、.net clien等第三方客户端测试CORS时要注意因为在进行请求时可能不会自动加跨域请求头Origin所以默认是非跨域请求确保跨域的话要手动加Origin请求标头。
### 预检(Option)请求
> 非简单请求如PUT、DELETE
> 非简单请求如PUT、DELETE
## IIS CORS 模块
Loading…
Cancel
Save