跨域

什么是同源

两个url的源必须一模一样,就说这两个url就是同源的

同源策略

  • 浏览器故意规定:如果一个JS文件运行在源A里,那么就只能获取到源A的数据。不能获取到其他源的数据,即不允许跨域
  • 不同源的页面之间不允许互相访问数据
  • 目的:保护用户隐私

什么是跨域

一般来说,当一个请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。最常见的就是在一个域名下的网页中,调用另一个域名中的资源。

JSONP 跨域

我们在跨域的时候,由于当前浏览器不支持CROS,或者因为某些原因不支持CROS,那我们就必须用
JSONP来跨域。于是请求一个JS文件,这个JS文件会执行一个回调,回调里面就有我们的数据。我们当前网站创建一个script标签去请求另外一个网站的JS,JS里面会夹带我要的数据,而且这个JS会调用我写的一个全局函数来运行,就可以把数据给我了.这个回调的名字是我们随机生成的随机数,我们把这个回调的名字以callback的参数传给后台,后台就会把这个函数返回给我们,再执行

优点:

  • 兼容IE
  • 跨域

缺点:

  • 因为script标签引用,得不到详细信息:状态码、header,只知道成功失败。
  • 因为是script标签,只可以发get请求,当然不能支持POST

CORS 跨域

CORS,全称Cross-Origin Resource Sharing ,是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。

详细做法:

Access-Control-Allow-Origin: MDN文档

作者:过程是风景
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/justcho/p/13472775.html