学无先后,达者为师

网站首页 前端文档 正文

什么是浏览器跨域访问操作,js如何实现?

作者:Ervoconite. 更新时间: 2022-10-14 前端文档

浏览器跨域访问:当请求的URL中的协议、域名、端口三个之中有一个与当前页面的URL不同时,就属于跨域。

JS实现跨域:

一、 JSONP

        通过script标签请求时,后台会根据相应参数生成相应的json数据放入当前js文件执行,调用jsonp的回调函数。

二、 document,domain+iframe跨子域(主域相同时才能使用)

三、 window.name+iframe

        window的name值在不同页面加载后亦然存在且支持非常长的name值(2M)

四、 window.postMessage(不常用)

        window.postMessage(message,targetOrigin)方法是html5新引进特性,可以使用它来向其他window对象发送消息。

五、跨域资源共享(CORS)

        可让AJAX实现跨域访问,CORD允许一个域上的网络应用向另一个域提交跨域AJAX请求。

        服务器设置Access-Control-Allow-Origin HTTP相应头后,浏览器将会允许跨域请求

六、location.hash+iframe(不常用)

七、Web sockets

        web socket: 一种浏览器的API,其目标是在一个单独的持久连接上提供全双工、双向通信。                            (同源策略不适用)

        原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。去的服务器响应后,建立连接会使用HTTP升级,从HTTP协议交换为web socket协议。

八、flash URLLoader

        flash有自己的安全策略,服务器可通过crossdomain.xml文件来声明能被哪些域的SWF文件访问,SWF也可通过API来确定自身能被哪些域的SWF加载。

原文链接:https://blog.csdn.net/Moutan/article/details/127286832

栏目分类
最近更新