面试之跨域

1.跨域:

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

同协议,同端口,同域名才属于同一域。

ajax出于安全考虑禁止跨域,但是src可以跨域。

2.非同源限制

【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

【2】无法接触非同源网页的 DOM

【3】无法向非同源地址发送 AJAX 请求

3.跨距解决方法:

【1】设置document.domain解决无法读取非同源网页的 Cookie问题

此方案仅限主域相同,子域不同的跨域应用场景。

【2】跨文档通信 API:window.postMessage(data,url)

它可用于解决以下方面的问题:

  • 页面和其打开的新窗口的数据传递
  • 多窗口之间消息传递
  • 页面与嵌套的iframe消息传递
  • 上面三个场景的跨域数据传递

【3】JSONP

【4】CORS

CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。

1、普通跨域请求:只需服务器端设置Access-Control-Allow-Origin

2、带cookie跨域请求:前后端都需要进行设置

【前端设置】根据xhr.withCredentials字段判断是否带有cookie

参考资料https://blog.csdn.net/qq_38128179/article/details/84956552

原文地址:https://www.cnblogs.com/OnceKing1996/p/13596265.html