首页IT科技vue的跨域(VUE跨域、常用解决跨域的方法)

vue的跨域(VUE跨域、常用解决跨域的方法)

时间2025-09-19 16:43:49分类IT科技浏览5929
导读:当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。...

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

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

解决跨域常用方法:

一          、VUE2.0中常用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实现跨域

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) },

感谢各位看官 阅读~

希望能帮助到大家

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
hosts.apk(HostGator中文站已完成改版升级(hostmonitor汉化))