解决同源政策问题的第二,三种方法

CORS

Jsonp绕过了同源限制,发送的不是Ajax请求。
CORS全称为Cross-originresource sharing,即跨域资源共享,它允许浏览器向跨域服务器发送Ajax请求,客服了Ajax只能同源使用的限制。
在这里插入图片描述

app.get('/cross', (req, res) => {
	//允许哪些客户端访问我
	//都是在请求头中设置
	//* 代表允许所有客户端访问我
	res.header('Access-Control-Allow-Origin', '*');
	//允许客户端使用哪些请求方法访问我
	res.header('Access-Control-Allow-Methods', 'get, post');
	res.send('ok');
})
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<button id="btn">点我发送请求</button>
	<script src="/js/ajax.js"></script>
	<script>
		var btn = document.getElementById('btn');
		//为按钮添加点击事件
		btn.onclick = function () {
			ajax({
				type: 'get',
				url: 'http://localhost:3001/cross',
				success: function (data) {
					console.log(data);
				}
			})
		};
	</script>
</body>
</html>

一般这种方法,都放在服务器端的最上面。先用中间件拦截所有请求。

//拦截所有请求
app.use((req, res, next) => {
//允许哪些客户端访问我
	//都是在请求头中设置
	//* 代表允许所有客户端访问我
	res.header('Access-Control-Allow-Origin', '*');
	//允许客户端使用哪些请求方法访问我
	res.header('Access-Control-Allow-Methods', 'get, post');
	next();
});

访问非同源数据,服务器端解决方案(绕过了同源限制)

同源政策是浏览器给予Ajax技术的限制,服务器端是不存在同源政策限制。
在这里插入图片描述
第三方模块: request
在这里插入图片描述
一号网站客户端:

<button id="btn">点我发送请求</button>
	<script src="/js/ajax.js"></script>
	<script>
		var btn = document.getElementById('btn');
		//为按钮添加点击事件
		btn.onclick = function () {
			ajax({
				type: 'get',
				url: 'http://localhost:3000/server',
				success: function (data) {
					console.log(data);
				}
			})
		};
	</script>

一号网站服务器端:

//向其他服务器端请求数据的模块
const request = require('request');
app.get('/server', (req, res) => {
	request('http://localhost:3001/better', (err, response, body) => {
		res.send('body');
	})

二号网站服务器端:

app.get('/better', (req, res) => {
	res.send('ok');
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值