配置Domino解决CORS跨域问题

大家好,才是真的好。

前面我们讲过几篇Web应用开发的简单示例,主要功能是同一个站点的同一个应用里里面查看和搜索文档。如果对数据进行操作,可能多少会遇到网页跨域访问问题。

跨域,简单来说,就是浏览器对javascript施加的安全限制,不允许访问非同源的其他网站脚本。

不过,我们常常需要访问其他网站脚本,例如当前你的网页在请求A服务器上的网页资源,但又想使用ajax从B服务器上去读取一些数据,这就产生了跨域问题。

以上是最简单情况,其实连协议、端口不一样,都会产生跨域问题,下表展示了常见跨域的情况:
在这里插入图片描述
解决跨域问题通常有三种方式,一是JSONP,利用 script 标签 src 属性调用不同站点的JS资源,但只能get;二是nginx反向代理,这个就是统一了访问的站点、协议、端口等问题;三是CORS,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

我们今天讲的就是Domino上实现CORS支持跨站资源访问。

不过,有不少前提条件,一是Domino本身要求,必须是10.0.1 FP2或以上版本;二是平台支持Windows,Linux和IBM AIX;三是浏览器要支持——当然,现在基本上所有浏览器都支持,除非你用的是IE10或之前的版本。

如果你确认满足以前条件,可以打开Domino服务器文档开始进行设置(本例中采用服务器文档,你也可以采用Internet站点文档进行设置):
在这里插入图片描述
在出现的Internet Protocols 选项卡下,找到HTTP选项卡,在DSAPI 区段下的DSAPI filter file names 字段下,设置值为ncorsext(如果是linux平台则应为corsext),如下图所示:
在这里插入图片描述
之后在Domino的数据目录下的domino文件夹中,手动新建一个文件夹叫做cors,在cors文件夹中新建一个文件cors-rules.json(不建议采用windows自带的记事本创建,否则会产生意外的问题),如下图:
在这里插入图片描述
接着,你可以按照下列案例填充该json文件:

   },

      "allowOrigins": [ "http://this.example.com", "http://that.example.com" ],

      "allowMethods": [ "GET", "POST", "PUT", "DELETE" ],

      "allowCredentials": true,

    }

  ]

}



{

  "version": "1.0",

  "rules": [

    {

      "resource": {

        "path": "/api/data/documents"

      },

      "allowOrigins": [ "http://this.example.com", "http://that.example.com" ],

      "allowMethods": [ "GET" ],

      "allowCredentials": true

    },

    {

      "resource": {

        "path": "/api/data"

      },

      "allowOrigins": [ "http://this.example.com", "http://that.example.com" ],

      "allowMethods": [ "GET", "POST", "PUT", "DELETE" ],

      "allowCredentials": true

    },

    {

      "resource": {

        "path": "/api/freebusy"

      },

      "allowOrigins": [ "http://this.example.com" ],

      "allowMethods": [ "GET" ]

    }

  ]

}


效果如下图所示:
在这里插入图片描述
当然,我们也可以给一些JSON内容解释:

version:版本,必需,且必须设置为“1.0”

rules :规则,定义 CORS 规则的 JSON 对象数组,每个规则都包含以下元素:

resource,资源:定义允许访问的外部请求URL。这是一个包含以下元素的对象:

    path:资源的相对路径(如果是 Domino 代理程序路径,可不带服务器名称 的URL)

    allowOrigins:这是一个字符串或字符串数组,用于定义可以调用已定义资源的主机

    allowMethods:这是一个字符串数组,其中包含此规则允许的方法。由于 LotusScript 端点只接受 GET 和 POST;您可以将规则限制为这两种方法。

allowCredentials:(可选)如果要允许客户端(网站)将凭据传递给服务器,请将此项设置为 true。

详细的解释可参考帮助文档,例如在线帮助:https://help.hcltechsw.com/domino/10.0.1/conf_cors_json.html

不过帮助文档里面的JSON示例有个小问题,多了一个逗号,读者们要小心此雷。

最后,在Domino服务器上先输入命令tell http quit,等待http任务结束后,输入命令load http,如下图:
在这里插入图片描述
当你见到信息HTTP Server: DSAPI CORS Filter Loaded successfully时,就可以确定你配置成功了。

内容很多,如果你看不懂,没关系,早点放弃,除开应用开发,毕竟Domino维护也是很重要的功能。

今天就讲到这里。更多精彩内容请关注微信公众号:协作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值