ajax跨域方法

Ajax跨域

跨域: 网站A去访问网站B的数据

存在的问题: 浏览器有同源策略 (浏览器阻止ajax请求得到的数据在页面上的继续使用)

解决方案: jsonp、cors、服务器代理

jsonp的核心原理

使用script标签的src属性进行跨域请求,得到的结果会被当成js代码来执行

<script src="/login/status"></script>

/login/status 响应的结果:
var isLogin = true;
var userId = "dasdast356532e";

cors的核心原理

CORS:全称为 Cross-originresource sharing,即跨域资源共享,它允许浏览器向跨域服务器发送 Ajax 请求,克服了 Ajax 只能同源使用的限制

核心原理:在服务器端设置中间件,在中间件中设置两个属性:

//在被访问的服务器上设置
//设置可以访问的IP地址
//* 标签所有IP地址都可以访问
'Access-Control-Allow-Origin', '*'
//设置可以访问的方式
'Access-Control-Allow-Methods', 'GET, POST'

// 引入模块并创建服务器对象
const app = require('express')();
app.listen(3000, () => {
  console.log('server is running');
})
//设置跨域访问
app.all('*', function(req, res, next) {
	res.header("Access-Control-Allow-Origin", "*");
	res.header("Access-Control-Allow-Headers", "X-Requested-With");
	res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
	res.header("X-Powered-By",' 3.2.1')
	res.header("Content-Type", "application/json;charset=utf-8");
	next();
});
app.get('/api/goods', (req, res) => {
  res.send()
})

服务器代理的核心原理

跨域访问主要是因为浏览器的同源政策导致跨域访问时,服务器响应了数据,但是浏览器因为同源政策不允许使用,所有可以访问自己的服务器,在服务器端访问其他网站的数据,获取到之后在响应给浏览器就可以使用

原文地址:https://www.cnblogs.com/j-j-h/p/12056923.html