1、什么是跨域?

由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。存在跨域的情况:

  • 网络协议不同,如http协议访问https协议。

  • 端口不同,如80端口访问8080端口。

  • 域名不同,如qianduanblog.com访问baidu.com。

  • 子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。

  • 域名和域名对应ip,如www.a.com访问20.205.28.90.

2、跨域请求资源的方法:

(1)、porxy代理

定义和用法:proxy代理用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。

实现方法:通过nginx代理;

注意点:1、如果你代理的是https协议的请求,那么你的proxy首先需要信任该证书(尤其是自定义证书)或者忽略证书检查,否则你的请求无法成功。

(2)、CORS 【Cross-Origin Resource Sharing】

定义和用法:是现代浏览器支持跨域资源请求的一种最常用的方式。

使用方法:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:

res.writeHead(200, {"Content-Type": "text/html; charset=UTF-8","Access-Control-Allow-Origin":'http://localhost','Access-Control-Allow-Methods': 'GET, POST, OPTIONS','Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
});

(3)、jsonp

定义和用法:通过动态插入一个script标签。浏览器对script的资源引用没有同源限制,同时资源加载到页面后会立即执行(没有阻塞的情况下)。

特点:通过情况下,通过动态创建script来读取他域的动态资源,获取的数据一般为json格式。

实例如下:

<script>function testjsonp(data) {console.log(data.name); // 获取返回的结果}
</script>
<script>var _script = document.createElement('script');_script.type = "text/javascript";_script.src = "http://localhost:8888/jsonp?callback=testjsonp";document.head.appendChild(_script);
</script>

缺点:

  1、这种方式无法发送post请求(这里)

  2、另外要确定jsonp的请求是否失败并不容易,大多数框架的实现都是结合超时时间来判定。

什么是跨域?跨域请求资源的方法有哪些?相关推荐

  1. 什么是跨域及跨域请求资源的方法?

    1.由于浏览器同源策略,凡是发送请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域. 2.跨域请求资源的方法: (1).porxy代理(反向服务器代理) 首先将用户发送的请求发送给中 ...

  2. java httpclient 异步请求_java_java实现HttpClient异步请求资源的方法,本文实例讲述了java实现HttpClien - phpStudy...

    java实现HttpClient异步请求资源的方法 本文实例讲述了java实现HttpClient异步请求资源的方法.分享给大家供大家参考.具体实现方法如下: package demo; import ...

  3. 跨域和options请求

    前后端分离的项目中,前端和后端单独部署,使用不同的域名,前端代码在浏览器端访问后端的时候就会有跨域问题. 之前帮前端调试活动页面的时候,chrome调试工具上总是看到一个请求会重复发两次,后端加了锁, ...

  4. AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)

    根据视频进行整理 [https://www.bilibili.com/video/BV1WC4y1b78y?p=1] 视频资料 百度网盘: 链接:[https://pan.baidu.com/s/1n ...

  5. Nginx 解决WebApi跨域二次请求以及Vue单页面问题

    Nginx 解决WebApi跨域二次请求以及Vue单页面问题 参考文章: (1)Nginx 解决WebApi跨域二次请求以及Vue单页面问题 (2)https://www.cnblogs.com/ji ...

  6. Thinkphp5.1允许uni-app的H5跨域请求接口解决方法

    Thinkphp5.1允许uni-app的H5跨域请求接口解决方法 参考文章: (1)Thinkphp5.1允许uni-app的H5跨域请求接口解决方法 (2)https://www.cnblogs. ...

  7. 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

    我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也 ...

  8. 中止请求和超时 跨域的HTTP请求 认证方式 JSONP

    中止请求和超时 一个栗子在上传多少秒以后直接终止请求 // 发起HTTP GEt请求获取指定URl的内容 // 如果响应成功到达,将会传入responseText给回调函数 // 如果响应在timeo ...

  9. jQuery ajax跨域请求的解决方法

    jQuery ajax跨域请求的解决方法 参考文章: (1)jQuery ajax跨域请求的解决方法 (2)https://www.cnblogs.com/freeweb/p/4908832.html ...

最新文章

  1. 22. linux 常用命令
  2. eclipse 配置java路径_Java修改eclipse中web项目的server部署路径问题
  3. (转)WCF教程系列(1)-创建第一个WCF程序
  4. 【WebRTC---入门篇】(十九)TURN协议
  5. qiniudn.com域名已完全恢复
  6. 嘉年华回顾丨李圣陶带你了解阿里巴巴智能化运维的奥秘
  7. android db加载后无法读取任何内容_android性能优化(二)之卡顿优化
  8. Chrome浏览器快速获取静态控件的XPATH
  9. 收藏啦~ Github上 10 个开源免费且优秀的后台控制面板
  10. php中数组自定义排序
  11. 计算机模运算规则,补码,模运算和溢出
  12. 计算机网络考研知识点总结,2020计算机专业考研的计算机网络部分知识点
  13. 2020牛客暑期多校训练营(第九场)K-The Flee Plan of Groundhog
  14. ios 裁剪框大小_ios 图片裁剪修改尺寸的方法总结
  15. 皮卡智能联手全球最大贸易服务商PingPong,共推AIGC应用落地服务
  16. VIII openstack(2)
  17. 布袋除尘器类毕业论文文献有哪些?
  18. 好消息,个税起征点要提至每月5000了!
  19. 窥探现代浏览器架构(二)
  20. iPhone模拟定位(非越狱修改手机定位)

热门文章

  1. Your branch and remoteBranchName have diverged solution
  2. 深入理解TDNN(Time Delay Neural Network)——兼谈x-vector网络结构
  3. 【pacing 1】PACER模块、PacedSender 及关键参数
  4. VOJ - Did he drop any good loot? (三维DP)
  5. ue4-异步加载资源
  6. 图书馆管理系统-登录与注册部分(c语言实现)
  7. html中固定table的首行和首列
  8. 20160815命令行进入其他盘
  9. Windows下搭建MQTT服务器
  10. 绝缘栅双极晶体管IGBT