跨域请求

跨域请求

1.同源策略

同IP同端口即为同源,为了安全,不同源的客户端在未授权情况下不可读写对方资源,但部分场景需要读写对方资源——跨域请求

2.利用jsonp实现跨域请求

原理

Ajax在默认的情况下是不可跨域的,但是script标签可以通过src属性获取到跨域的js文件。

将数据放在js文件中,在通过script标签跨域引入即可实现跨域请求

(jsonp与ajax相似本质上不同)

用法

jQuery中的ajax封装了jsonp(二者不同)

后端核心代码

127.0.0.1:3000端口

const jsonp = require("koa-jsonp");//需要安装koa-jsonp模块
app.use(jsonp());
router.get("/getJson",ctx => {
	ctx.body = "this is the content from 3000";
})
前端核心代码

在127.0.0.1:8080端口

//请求3000端口的数据
$.ajax({
    url:"http://127.0.0.1:3000/getJson",
    dataType:"jsonp"
}).done( res => {
    console.log(res);
})

3.设置响应头

通过设置http协议的响应头部属性Access-Control-Allow-Origin可以允许其他服务器对本服务进行跨域请求

127.0.0.1:3000端口允许8080端口跨域请求,’*'意味允许全部

router.get("/getdata", async (ctx) => {
    ctx.set('Access-Control-Allow-Origin', 'http://127.0.0.1:8080'); 
    ctx.body = "data"
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值