腾讯官宣:QQ 已实现“三端同步更新”
腾讯官方宣布,QQ 已实现“三端同步更新”(Windows、Linux 和 Mac),并且未来也会继续执行“三端同步更新”的策略。 与另外两个版本相比,目前 Linux 版 QQ 的功能比较欠缺。对此,腾讯QQ开发团队表示,他们正在全力赶上。Windows系统有的,Linux系统早晚都会有,真正做到三端统一。 公告原文。
我很高兴地宣布,Moco 1.5.0正式发布了。
Moco 是一个可以轻松搭建模拟服务器的框架/工具/程序库。
Moco 可以方便地支持 HTTP 模拟服务器的搭建。
更详细的 API,请参考 API。
更多的使用方式,请参考 用法。
过往版本更新:Moco 1.4.0、Moco 1.3.0
在 1.5.0 版本中,新增了下面几个 API:
cors,以支持 CORS,下面是 CORS 配置对应的 API:
allowOrigin(Access-Control-Allow-Credentials)allowCredentials(Access-Control-Allow-Credentials)exposeHeaders(Access-Control-Expose-Headers)maxAge(Access-Control-Max-Age)allowMethods(Access-Control-Allow-Methods)allowHeaders(Access-Control-Allow-Headers)req.client.port,支持获取客户端连接端口信息sameSite,对 SameSite 属性进行配置在 1.5.0 中最大的一个新增特性是对于 CORS 的支持。跨域访问是软件开发中常常遇到的问题,因此,服务端常常需要配置对于 CORS(Cross-origin resource sharing)的支持。我们可以通过在应答中配置cors 来设置服务器对于 CORS 的支持。
使用 CORS 最简单的方式是默认支持 CORS,也就是允许所有的跨域访问。这时,我们无需配置任何信息,只要在应答中设置cors即可。
server.response(cors());
{
"response" :
{
"cors" : true
}
}
在这种默认的情况下,Moco 会设置常用的 HTTP 头以支持 CORS,比如:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Headers: *
在 CORS 中,通过设置 Access-Control-Allow-Origin 这个头,我们可以限制哪些域名可以进行跨域访问。通过 allowOrigin,我们可以设置 Access-Control-Allow-Origin HTTP 头,比如:
server.response(cors(allowOrigin("https://www.github.com/")));
{
"response" :
{
"cors" :
{
"allowOrigin" : "https://www.github.com/"
}
}
}
如果允许来自所有域名的请求访问,我们可以将 allowOrigin 的值设置成 *。
在 JSON API 中,我们还可以直接设置 Access-Control-Allow-Origin。
{
"response" :
{
"cors" :
{
"Access-Control-Allow-Origin" : "https://www.github.com"
}
}
}
在 CORS 中,通过设置 Access-Control-Allow-Methods 这个头,我们可以限制哪些 HTTP 方法可以进行跨域访问。通过 allowMethods,我们可以设置 Access-Control-Allow-Methods HTTP 头,比如:
server.response(cors(allowMethods("GET", "PUT")));
server.response(cors(allowMethods(HttpMethod.GET, HttpMethod.PUT)));
在 Java API 中,你可以直接使用字符串进行设置,或者使用 HttpMethod 的枚举。
{
"response" :
{
"cors" :
{
"allowMethods" : ["GET", "PUT"],
}
}
}
如果允许所有的 HTTP 方法,我们可以将 allowMethods 的值设置成 *。
在 JSON API 中,我们还可以直接设置 Access-Control-Allow-Methods。
{
"response" :
{
"cors" :
{
"Access-Control-Allow-Methods" : ["GET", "PUT"]
}
}
}
在 CORS 中,Access-Control-Allow-Headers 这个头表示服务器支持的所有头信息字段。通过 allowHeaders,我们可以设置 Access-Control-Allow-Headers HTTP 头,比如:
server.response(cors(allowHeaders("X-Header", "Y-Header")));
{
"response" :
{
"cors" :
{
"allowHeaders" : ["X-Header", "Y-Header"]
}
}
}
如果支持所有的 HTTP 头,我们可以将 allowHeaders 的值设置成 *。
在 JSON API 中,我们还可以直接设置 Access-Control-Allow-Headers。
{
"response" :
{
"cors" :
{
"Access-Control-Allow-Headers" : ["X-Header", "Y-Header"]
}
}
}
在 CORS 中,Access-Control-Max-Age 这个头表示预检请求的有效期。通过 maxAge,我们可以设置 Access-Control-Max-Age HTTP 头,这里我们需要设置时间以及其单位,比如:
server.response(cors(maxAge(1728000, TimeUnit.SECONDS)));
{
"response" :
{
"cors" :
{
"maxAge": {
"duration": 1728000,
"unit": "second"
}
}
}
}
在 JSON API 中,我们还可以直接设置 Access-Control-Max-Age。
{
"response" :
{
"cors" :
{
"Access-Control-Max-Age" : {
"duration": 1728000,
"unit": "second"
}
}
}
}
在 CORS 中,Access-Control-Allow-Credential 这个头表示是否允许发送Cookie。通过 allowCredentials,我们可以设置 Access-Control-Allow-Credential HTTP 头,比如:
server.response(cors(allowCredentials(true)));
{
"response" :
{
"cors" :
{
"allowCredentials" : true
}
}
}
在 JSON API 中,我们还可以直接设置 Access-Control-Allow-Credentials。
{
"response" :
{
"cors" :
{
"Access-Control-Allow-Credentials" : true
}
}
}
在 CORS 中,Access-Control-Expose-Headers 指定了浏览器能够通过 XMLHttpRequest 对象的getResponseHeader() 方法得到的 HTTP 头信息。通过 exposeHeaders,我们可以设置 Access-Control-Expose-Headers 这个 HTTP 头,比如:
server.response(cors(exposeHeaders("X-Header", "Y-Header")));
{
"response" :
{
"cors" :
{
"exposeHeaders" : ["X-Header", "Y-Header"]
}
}
}
在 JSON API 中,我们还可以直接设置 Access-Control-Expose-Headers。
{
"response" :
{
"cors" :
{
"Access-Control-Expose-Headers" : ["X-Header", "Y-Header"]
}
}
}
req.client.port 提供了在模板中访问客户端连接端口的能力。
server.request(by(uri("/template"))).response(template("${req.client.port}"));
{
"request": {
"uri": "/template"
},
"response": {
"text": {
"template": "${req.client.port}"
}
}
}
相比于原有的几个 Cookie 属性,SameSite 是一个后来增加的 Cookie 属性,用来防止 CSRF 攻击和用户追踪。sameSite API 可以让我们为 Cookie 设置 SameSite 属性。
server.response(cookie("loggedIn", "true", sameSite("NONE")), status(302));
server.response(cookie("loggedIn", "true", sameSite(CookieAttribute.SameSite.NONE)), status(302));
sameSite 支持 STRICT、LAX、NONE 几个值。在 Java API 中,你可以直接使用字符串进行设置,或者使用 CookieAttribute.SameSite 的枚举。
{
"request": {
"uri": "/cookie-with-same-site"
},
"response": {
"cookies": {
"login": {
"value": "true",
"sameSite": "Lax"
}
}
}
}
欢迎使用 1.5.0 版本,体验 Moco 最新的功能!
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。