跨域

新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境

本文章向大家介绍新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境,主要包括新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

可组合性是 Web 的非常强大的一项能力,你可以轻而易举的加载来自不同来源的资源来增强网页的功能,例如:font、image、video 等等。

这些服务非常强大,也很方便,但是这样的策略同样会加大信息泄漏的风险,攻击者可以利用某些手段泄漏你的用户信息。

浏览器在阻止这些攻击上做的也很好。同源策略我们已经很熟悉了,它用于限制不同源的站点的资源访问。详细可以戳浏览器的同源策略,这里不再过多介绍。

但是同源策略也有一些例外,任何网站都可以不受限制的加载下面的资源:…

Chrome 91 将启用针对 SharedArrayBuffers 的跨域限制

预计从今年 5 月的 Chrome 91 开始,所有平台都将需要启用跨域隔离,以访问诸如 SharedArrayBuffer 和 performance.measureUserAgentSpecificMemory() 之类的 API 。这将使桌面平台与 Android 保持一致,后者在 Chrome 88 中发布了此限制。

如果需要使用这些 API,必须为页面提供以下标头来确保页面是跨域隔离的:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

在执行此操作后,除非资源通过 Cross-Origin-Resource-Policy 标头或 CORS 标头(Access-Control-Allow- *等)明确允许,否则页面将无法加载跨域内容。

SharedArrayBuffer 于 2017 年 7 月的 …

2020再谈跨域

跨域这个话题已经谈了很多年了,怎么现在又要谈这个问题?本来是可以不必再提了的,但是由于Chrome 86版本以后又增加了很多限制,导致我们不得不再次提起。

CORS

对于前端开发来说,跨域通常有两种方式,一种是在服务端修改nginx配置,在response headers里添加CORS设置,另一种是在本地架设代理。我们先谈第一种。

原本在nginx里添加CORS已经是一种常规操作,简单到无以复加:…

对于未来chrome80 samesite问题的兼容解决方案

未来chrome80会默认(SameSite: lax)在跨域请求的情况下不允许跨域携带cookie给后端,导致所有跨域场景下使用cookie进行鉴权的服务会受到影响。
网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。
但是设置了SameSite为None, 很难保证在非chrome浏览器上一定是兼容的,所以基于兼容性考虑有两个方案:
1.采用两套cookie 例如原cookie中已经种入了session-id=xxxxx,可以维持不变,再额外种入另一个cookie session-id-2=xxxxx同时设置特性SameSite为none secure: true。这样可以兼容新旧版的所有浏览器。这样就要求后端取得时候判断session-id不存在,再取cookie session-id-2的值
2.JWT方案,统一把token放在header的authorization,就不存在跨域携带cookie的困扰了
第一个方案主要适配在于后端,前端基本不需要变动,第二个方案需要前后端做一定的改造,视情况而定

    

使用HTML5中postMessage实现Ajax中的POST跨域问题

HTML5中提供了在网页文档之间相互接收与发送信息的功能。使用这个功能,只要获取到网页所在窗口对象的实例,不仅仅同源(域+端口号)的web网页之间可以互相通信,甚至可以实现跨域通信。

浏览器支持程度:IE8+,firefox4+,chrome8+ opera10+

1. 首先,要想接收从其他的窗口发过来的消息,就必须对窗口对象的message事件进行监听,如下代码:

window.addEventListener(“message”, function(){},false);
        

Nginx apache 实现AJAX跨域请求

AJAX从一个域请求另一个域会有跨域的问题。那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Control*指令。如下所示:

            

php实现SESSION跨域

稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com、 i.a.com、bbs.a.com。而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个子系统中都是可以登录使用的。各个服 务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可。但还存在一个问题,就是用户在 i.a.com登录之后,进入www.a.com时,仍然需要重新登录,基本的通行证的问题,映射到技术上,其实就是各个服务器之间如何实现共享 SESSION 数据的问题。…