踩坑记录

Onlyoffice的http和https跨域问题解决

凝神长老 · 11月5日 · 2019年 · · · 1041次已读

Docker 安装的 Onlyoffice 的 Community Server,nginx 反向代理到了 docker 的端口,如果是 http 访问,nginx 会先做一次 301 到 https。但是使用时发现出现跨域问题,http 和 https 的 跨域 问题。

Docker 中 /etc/nginx/ 下相关的配置中已经有了 add_header Access-Control-Allow-Origin *;,但是依然无法生效,具体体现是:

  1. 无法上传文件。
  2. Short URL 无法使用。

在查看了 https://segmentfault.com/a/1190000012550346 这篇文章之后,对跨域有了更多的了解。

application/json 的请求会在正式通信之前,增加一次预检请求,这次预检请求会带上头部信息。发送预检请求时,需要用到方法 OPTIONS,所以服务器需要允许该方法。

if ($request_method = 'OPTIONS') {
        return 204;
    }

所以,只需要 docker exec -it DOCKER_ID /bin/bash 进入 docker,然后编辑 /etc/nginx/includes/onlyoffice-communityserver-common.conf.template,修改add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

if ($request_method = 'OPTIONS') {
    return 204;
}

保存后退出 docker,然后 commit,然后 systemctl restart docker

0 0 投票
Article Rating
订阅评论动态
提醒
guest
0 评论
行内反馈
查看所有评论