前端跨域-随笔

浅谈前端跨域

一、什么是跨域

跨域可以简单理解为因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。跨域不是请求发不出去,也不是服务端收不到,而且还能正常返回结果,只是被浏览器所拦截了

二、什么是同源策略

同源策略是浏览器核心的安全功能,就是说浏览器的tab同时打开两个页面,当浏览器的其中一个tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和当前页面同源的脚本才会被执行。 如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。同源策略是浏览器的行为,是为了保护本地数据(Cookie、LocalStorage、IndexedDB)不被JavaScript代码获取回来的数据污染。

三、CORS跨域

服务端设置,前端直接调用(后台允许前端某个站点进行访问),
在响应头上添加Access-Control-Allow-Origin属性,指定同源策略的地址。同源策略默认地址是网页的本身。只要浏览器检测到响应头带上了CORS,并且允许的源包括了本网站,那么就不会拦截请求响应。在这里插入图片描述

import axios from 'axios'
//-----------------------------------
 export default {
        // cors跨域
        mounted(){
            let url = "https://cnodejs.org/api/v1/topics/"
            axios.get(url).then((res)=>{console.log(res,'qq')})
        }
  }

四、JSONP跨域

利用script元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 数据。JSONP请求一定需要对方的服务器做支持才可以。ps:本身不是一个请求,是一个js。

import jsonp from 'jsonp'
// ------------------------------
export default {
  // jsonp跨域
    mounted(){
       let url = 'http://www.dangdang.com/Standard/Framework/Core/hosts/pc_mina.php'
        jsonp(url,()=>{})
    }
}

js相应的位置会产生一个被封装好的一个参数callback,对应的还有一个名为jp0的函数。

五、接口代理

通过修改nginx的服务器配置来实现。
首先需要在src同级建一个名为vue.config.js的文件(webpack配置表)

module.exports = {
    // 安全省事 前后端都不需要改
    devServer:{
        // 主机
        host:'localhost',
        // 端口号 可以在这里修改端口号本地打开默认为8080
        port:8080,
         proxy:{
             '/Standard':{
                //  url路径 目标源
             target:"http://www.dangdang.com",
            //  changeOrign默认 false:请求头中的host是浏览器发过来的host
            // true发送请求头中host会设置成target
             changeOrigin:true,
            // 路径转发规则 接口多的时候可以设定虚拟端口进行拦截,每个上面都有
            // api,然后发到被代理的端口
             pathRewrite:{
                '/api':'/api'
              }
            
            }
            
         }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值