IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 跨域问题(has been blocked by CORS policy:Response……)原因及解决办法 -> 正文阅读

[JavaScript知识库]跨域问题(has been blocked by CORS policy:Response……)原因及解决办法

参考:https://www.cnblogs.com/wyw0905/p/14990707.html

前端报错在这里插入图片描述

has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

什么是CORS

CORS全称是跨域资源共享(Cross-Origin Resource Sharing)是一种AJAX跨域请求资源的方式

解决办法

一、vue 开发阶段解决跨域问题

开发阶段:vue.config.js中

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

二、JSONP解决办法

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

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

三、CORS(跨域资源共享)

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)    
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:40:43  更:2022-03-21 20:42:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:58:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码