6.9 跨域的问题 Access-Control-Allow-Origin

什么是跨域?

由一个网址另外一个网址发送请求,出于安全考虑,浏览器存在同源政策,只要协议,域名,端口中的任意一个不同,不会导致跨域 Access-Control-Allow-Origin

三种解决方法

jsonp(前后端都需要设置)

原理:script标签不受同源政策的影响,所以不存在跨域问题
客户端传一个回调函数给服务器端,然后服务器端,通过函数返回数据(作为函数的参数)
通过script标签发送的请求
在这里插入图片描述

node端

app.get('/jsonp', (req, res) => {
    var data = { name: 'jsonp数据' }
    data = JSON.stringify(data);
    var callback = `${req.query.callback}(${data})`;
    res.send(callback)
})

通过jquery

 // 通过jsonp解决跨域问题
    function handleResponse(data) {
        console.log(data);
    }
    function getJsonp() {
        $.ajax({
            url: 'http://localhost:3000/jsonp',
            data: { name: 'zs' },
            dataType: 'jsonp',
            jsonpCallback: 'handleResponse'
        })
    }

通过原生js

// 通过jsonp解决跨域问题
    function handleResponse(data) {
        console.log(data);
    }
function jsonp() {
        var script = document.createElement('script');
        script.src = 'http://localhost:3000/jsonp?callback=handleResponse&name=zs&_=1623170793455';
        document.body.appendChild(script)
    }

cors (后端设置)

在nodejs端加上一下代码,便能解决跨域

//cors解决跨域
app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');//设置请求源 一般不写*
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');//设置请求的方法
    res.setHeader('Access-Control-Allow-Headers', '*'); //设置请求头
    next();
});

proxy(代理 前后端任意一个都行)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值