用CORS和JSONP解决跨域问题

作者: 07120665a058 | 来源:发表于2017-08-03 10:41 被阅读117次
  • 为什么会有跨域问题?
    因为浏览器的同源策略
  • 同源策略是什么?
    协议,域名,端口都相同
  • 如果非同源,会受到什么限制?
    (1) Cookie、LocalStorage 和 IndexDB 无法读取
    (2) DOM 无法获得
    (3) AJAX 请求不能发送

怎样解决非同源发送请求,也就是跨域问题呢,有以下几种方法

CORS

  • 客户端可以使用XMLHttpRequest发送请求,请求路径为绝对路径,服务端返回的数据在xhr.responseText
  • 如果服务器认为可以接受,就在Access-Control-Allow-Origin中返回相应的源或 *
  • 克服了AJAX只能同源使用的限制
res.header("Access-Control-Allow-Origin", "*");

JSONP

  • 通过使用动态<script>实现跨域,在url中指定回调函数
  • 能直接访问响应文本,支持浏览器和服务器的双向通信
script.src = "http://www.baidu.com/?callback=handleResponse"
function handleResponse(res){
  //res是服务端返回的数据
}

类似的还有 图像Ping,因为一个网页可以从任何网页中加载图片,不用担心跨域问题,所以,凡是拥有src这个属性的标签都拥有跨域的能力,缺点是无法访问响应文本,适用于浏览器和服务器间的单向通信

let img = new Image();
img.src = "http://"

两者的区别

  • JSONPJquery提供的跨域方式,JSONP只支持get方式的请求
  • CORSW3C提供的一个跨域标准 ,CORS支持所有类型的http请求

demo地址

相关文章

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • Spring Boot使用CORS解决跨域问题

    一、跨域问题描述 Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。CORS 与 ...

  • Vue实现跨域请求

    一般解决跨域问题可以通过CORS跨域、JSONP和反向代理跨域。下面分别介绍这三种跨域方式: 1、CORS 以ne...

  • spring boot CORS 支持

    一、Web 开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS 等等 CORS 与 JSONP...

  • 跨域访问

    参考文献:jsonp解决跨域问题 . cors解决跨域问题 . (java+前端小白)第一次碰到跨域问题,小伙伴们...

  • AJAX入门

    处理跨域的主要方法 JSONP CORS本文主要讨论CORS解决AJAX因为浏览器同源策略不能跨域请求数据的问题。...

  • PHP后台代码解决跨域问题

    PHP后台代码解决跨域问题 在前端里面,解决跨域的时候总显得那么的恶心,什么jsonp啊,ajax啊,CORS啊什...

  • 用CORS和JSONP解决跨域问题

    为什么会有跨域问题?因为浏览器的同源策略同源策略是什么?协议,域名,端口都相同如果非同源,会受到什么限制?(1) ...

  • 深入跨域问题(3) - 利用 JSONP 解决跨域

    深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域深入跨域问题...

  • 跨域

    解决跨域访问,最常用有三种办法 CORS jsonp 代理 CORS cross origin resource ...

网友评论

    本文标题:用CORS和JSONP解决跨域问题

    本文链接:https://www.haomeiwen.com/subject/fasxlxtx.html