CORS跨域 / Nodejs中间件代理跨域
跨域:指的是浏览器行为,正常情况下是成功的,只是同源策略不允许拿数据,所以会报错。
jsonp 方式跨域,主要的负担都由前端来承担,但是无法携带参数。
cors 方式跨域,主要的负担由后端来承担,看起来较为优雅。
CORS跨域
CORS是一个W3C标准,全称是"跨域资源共享"( Cross-origin resource sharing )。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了 AJAX 只能同源使用的限制。
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨域通信。
跨域实现
准备两个后端服务器,均启动服务
- 前端ajax 申请
修改路由,指定访问资源地址
let xhr = new XMLHttpRequest();
xhr.open("post","http://localhost:4000/post",true); // 直接修改路由即可
xhr.onload = function(){
console.log(xhr.responseText);
let res = xhr.getAllResponseHeaders();
console.log(res)
}
xhr.send();
- 后端服务器 允许
允许非同源进行访问
router.post("/post", async ctx => {
console.log((ctx.request.body)) // 接收返回的数据
// 允许所有的端口访问 即允许跨域
// ctx.set("Access-Control-Allow-Origin","*");
// 1. 不安全 2. 不能设置允许携带凭证
// 允许指定的端口访问
ctx.set