vue解决跨域的几种办法_前端跨域方法之cors

vue解决跨域的几种办法_前端跨域方法之corsVUE跨域、常用解决跨域的方法


Jetbrains全系列IDE稳定放心使用

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。

跨域是因为浏览器的同源策略所导致,同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,同源是指:域名、协议、端口相同vue解决跨域的几种办法_前端跨域方法之cors

解决跨域常用方法:

一、VUE中常用proxy来解决跨域问题

1、在vue.config.js中设置如下代码片段

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: { // 配置跨域
    '/api':{
        target:`http://www.baidu.com`, //请求后台接口
        changeOrigin:true, // 允许跨域
        pathRewrite:{
            '^/api' : '' // 重写请求
        }
    }
  },
}

 2、创捷axioss实例时,将baseUrl设置为 ‘/api’

const http = axios.create({
  timeout: 1000 * 1000000,
  withCredentials: true,
  BASE_URL: '/api'
  headers: {
     'Content-Type': 'application/json; charset=utf-8'
   }
})

二、JSONP解决跨域

Jsonp(JSON with Padding) 是 json 的一种”使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

<!DOCTYPE html>
       <html>
       <head>
           <meta charset="utf-8">
       </head>
       <body>
       <div id="textID"></div>
       <script type="text/javascript">
           function text_jsonp(req){
               // 创建script的标签
               var script = document.createElement('script');
               // 拼接 url
               var url = req.url + '?callback=' + req.callback.name;
               // 赋值url
               script.src = url;
               // 放入头部
               document.getElementsByTagName('head')[0].appendChild(script);
           }
       </script>
       </body>
       </html>

 三、CORS是跨域资源共享(Cross-Origin Resource Sharing),以 ajax 跨域请求资源,支持现代浏览器,IE支持10以上

在CORS请求,头部信息中包含以下三个字段:

Access-Control-Allow-Origin: 该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求,

Access-Control-Allow-Credentials: 可选,值为布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true。如果要发送Cookie,Access-Control-Allow-Origin必须设置为必须指定明确的、与请求网页一致的域名

Access-Control-Expose-Headers:可选。CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定

详细讲解请查看阮大神的文章,传送门附上:CORS详解

四、iframe实现跨域

vue解决跨域的几种办法_前端跨域方法之cors

iframe(src){
            //数组
            if(Array.isArray(src)){
                this.docs.visible = true;
            }else{
                this.docs.visible = false;
                
            }
            this.link  = src
            if(this.docs.visible == false){
                if(this.$refs['ruleIframe'] && this.$refs['ruleIframe'].querySelector('iframe')){
                    this.$refs['ruleIframe'].querySelector('iframe').remove()    //删除自身
                }
                var iframe = document.createElement('iframe');
                iframe.width = '100%';
                iframe.height = '100%';
                iframe.setAttribute('frameborder','0')
                iframe.src = src;                
                this.append(iframe)
            }
            
        },
        //创建元素 防止  获取不到 ruleIframe 递归
        append(iframe){
            if(this.$refs['ruleIframe']){
                this.$refs['ruleIframe'].appendChild(iframe);
                return
            }
            setTimeout(()=>{
                this.append(iframe);
            },500)    
        },

感谢各位看官 阅读~

希望能帮助到大家

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187062.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • FlashFXP 3.6 Final(正式版)注册码

    FlashFXP 3.6 Final(正式版)注册码昨天登陆FTP提示是否要升级,也没有注意点了下同意,结果升级后是最新英文版本的,把原来的资料也给丢了,忙了半天一看原来的注册码已经不好使用,在网上搜索下,找到一个可以使用的注册码和大家分享下:———————————————————FLASHFXPxgA9UrTnxgAAAAC7W5MNJwTnsl73n0Vuu1AePJgEAG41mgSvHSiDWi1Kg8B5xJNCCCAVCMr9R

    2022年7月26日
  • Python gzip和bz2模块 读写.gz 和.bz2压缩文件

    Python gzip和bz2模块 读写.gz 和.bz2压缩文件读写压缩文件问题你想读写一个gzip或bz2格式的压缩文件。解决方案gzip和bz2模块可以很容易的处理这些文件。两个模块都为open()函数提供了另外的实现来解决这个问题。比如,为了以文本形式读取压缩文件,可以这样做:#gzipcompressionimportgzipwithgzip.open(‘somefile.gz’,’rt’)asf:…

    2022年5月23日
  • [BIM]BIM中IFD介绍[通俗易懂]

    [BIM]BIM中IFD介绍[通俗易懂]第三大支柱IFD-确定交换的信息和你要的信息是同一个东西 IFD的全称是InternationalFrameworkforDictionaries,中文可以叫“国际字典框架”,和前两者IFC/IDM一样,作为BIM用户,能记住IFD的名字和记住IFD是字典就行了。  用BIM创建和管理信息,通过IFC和IDM实现信息在不同项目成员和不同软件产品之间的交换,从而使BIM价值最大化。…

    2022年10月22日
  • ajax跨域问题以及解决方案_js跨域请求的三种方法

    ajax跨域问题以及解决方案_js跨域请求的三种方法出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)AJAX跨域请求下面简单模拟一个场景—–>>前端有.

    2022年8月24日
  • nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题

    nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题用了nginx负载均衡后,在两台tomcat正常运行的情况下,访问http://localhost速度非常迅速,通过测试程序也可以看出是得到的负载均衡的效果,但是我们试验性的把其中一台tomcat(serverlocalhost:8080)关闭后,再查看http://localhost,发现反应呈现了一半反映时间快,一半反映时间非常非常慢的情况,但是最后都能得到正确结果。解决办法:问题解决,主要是proxy_connect_timeout这个参数,…

    2022年7月23日
  • 微型计算机原理与接口技术网课_微机原理接口技术答案

    微型计算机原理与接口技术网课_微机原理接口技术答案spContent=课程面向有志于从事计算机过程控制系统设计、或对计算机硬件结构感兴趣的学习者。总体目标是:具备输入/输出接口控制系统软硬件初步设计能力。课程以“家庭安全防盗系统”案例引导,主要介绍:计算机基础知识、微型机基本工作原理、80×86基本指令集、汇编程序设计、存储器接口设计、接口控制技术等。——课程团队课程概述在今天的信息化时代,计算机已成为了人类工作和生活中必不可少的一部分。计算机…

    2022年10月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号