本文写于 2019年11月05日,距今已超过 1 年,距 2022年10月18日 的最后一次修改也已超过 3 个月,部分内容可能已经过时,您可以按需阅读。如果图片无法显示或者下载链接失效,请给我反馈,谢谢!


Visits: 3645

0 0 投票数
评分

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 投票数
评分
发表留言
订阅评论
提醒
guest

在点击发表评论按钮时,网络请求的数据包含浏览器版本、操作系统版本和 IP 地址;您的网络服务提供商、雇主或学校、政府机构可能会看到您的访问活动;根据浏览器默认行为、操作系统设置和安全防护软件的设置不同,您的浏览器可能会也可能不会在本地 Cookies 缓存您输入的用户名、邮箱以便下次评论使用。

请对自己的言行负责。

您想以什么身份发表评论
邮箱将在您的评论被回复时给您通知
(可选)如果您也有个人网站,不妨分享一下
我对这篇文章的评分
这篇文章给您带来多大帮助
0 评论
内联反馈
查看所有评论