问题解决:web前端跨域请求

web跨域请求

浏览器报错:Access to XMLHttpRequest at’http://localhost:

3个跨域请求问题:

(1)不在同一协议(2)不在同一端口 (3)不在同一IP

解决方案:

!前两种方案用于解决请求自己服务器时的跨域问题。
!请求其它服务器,可参考服务器转发代理解决跨域问题

(1)jsonp,前后端配合解决示例:

// 服务器端接口定义的json数据
app.get('/jsonp',(req,res)=>{
    var name = req.query.name
    res.jsonp({
        name,
        age:18,
        sex:'男'
    })
})
//引入jQuery,发起JSON请求。注意callback是必须的。
<script>
        $.getJSON('http://127.0.0.1:3001/jsonp?name=11&callback=?').done((res)=>{
            console.log(res)
        })
 </script>

(2)设置服务端响应头:

	// 通过设置响应头解决跨域问题
    res.set('Access-Control-Allow-Origin','*')
<script>
        $.get('http://127.0.0.1:3001/jsonp?name=11').done((res)=>{
            console.log(res)
        })
</script>

(3)服务器转发代理解决跨域问题
服务器之间不存在跨域问题
安装模块: npm install http --save

// 服务器转发代理解决跨域问题
var http = require("http")
app.get('/info',(req,res)=>{
    // 通过设置响应头解决跨域问题
    res.set('Access-Control-Allow-Origin','*')
    // 通过服务器给另一个服务器发送请求
    http.get('http://open.douyucdn.cn/api/RoomApi/live',(req2,res2)=>{
        var str = ''
        req2.on('data',(data)=>{
            str += data
        })
        req2.on('end',()=>{
            res.send(str)
        })
    })
})
<script>
$.get('http://127.0.0.1:3001/info').done((res)=>{
            console.log(res)
        })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值