您的当前位置:首页正文

跨域什么意思

2023-05-16 来源:小奈知识网

什么是跨域

刘佳 5148

跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施加的安全限制。a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的。

一、 基本介绍

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要。

同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;

二、跨域访问示例

假设有两个网站,A网站部署在:http://localhost:81 即本地ip端口81上;B网站部署在:http://localhost:82 即本地ip端口82上。现在A网站的页面想去访问B网站的信息,A网站页面的代码如下(这里使用jquery的异步请求)。

从错误信息可以看出以上出现了跨域问题。

三、解决办法

1、jsonp跨域

JSONP(JSON with Padding:填充式JSON),应用JSON的一种新方法,

JSON、JSONP的区别:

①   JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用)

②JSONP 只支持get请求、不支持post请求

(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)

2、nginx反向代理

www.baidu.com/index.html需要调用www.sina.com/server.php,可以写一个接口www.baidu.com/server.php,由这个接口在后端去调用www.sina.com/server.php并拿到返回值,然后再返回给index.html

3、PHP端修改header

header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问

header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

4、document.domain【实现不同window之间的相互访问和操作】

跨域分为两种,一种xhr不能访问不同源的文档,另一种是不同window之间不能进行交互操作;

document.domain主要是解决第二种情况,且只能适用于主域相同子域不同的情况;

document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。例如:a.b.example.com中某个文档的document.domain可以设成a.b.example.com、b.example.com 、example.com中的任意一个,但是不可以设成c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。

兼容性:所有浏览器都支持;

优点:

可以实现不同window之间的相互访问和操作;

缺点:

只适用于父子window之间的通信,不能用于xhr;

只能在主域相同且子域不同的情况下使用;

使用方式:

不同的框架之间是可以获取window对象的,但却无法获取相应的属性和方法。比如,有一个页面,它的地址是http://www.example.com/a.html , 在这个页面里面有一个iframe,它的src是http://example.com/b.html, 很显然,这个页面与它里面的iframe框架是不同域的,所以我们是无法通过在页面中书写js代码来获取iframe中的东西的。

回复

我来回复

暂无回复内容

请 登录 或者 注册 后回复。 如何避免服务器拒绝式攻击 11个月前 0 36 英国服务器运行不正常的原因有哪些 11个月前 0 36 测试工程师需要具备哪些技能 7个月前 0 338 企业目标的管理是什么 10个月前 0 82 美国VPS主机如何避免被DDoS攻击 7个月前 0 83 项目全过程管理包括哪些内容 9个月前 0 2235 销售云平台有哪些功能 11个月前 0 68 印度服务器的优势有哪些 11个月前 0 82 高速低价服务器怎么选择 11个月前 0 32 如何选择北京服务器IDC运营商 10个月前 0 30

其他相关内容推荐2

点评

什么是跨域

Fanly 问答 2019-03-28 14:19:08 阅读(...)

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。

跨域的访问会带来许多安全性的问题,比如,cookie 一般用于状态控制,常用于存储登录的信息,如果允许跨域访问,那么别的网站只需要一段脚本就可以获取你的 cookie,从而冒充你的身份去登录网站,造成非常大的安全问题,因此,现代浏览器均推行同源策略。

跨域解决方案

通过 jsonp 跨域document.domain + iframe 跨域location.hash + iframewindow.name + iframe 跨域postMessage 跨域跨域资源共享(CORS)nginx 代理跨域nodejs 中间件代理跨域WebSocket 协议跨域

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到 XSS、CSFR 等攻击。所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。

显示全文