首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为服务器启用CORS?

如何为服务器启用CORS?
EN

Stack Overflow用户
提问于 2017-07-28 02:18:52
回答 2查看 3.7K关注 0票数 4

我需要创建一个apache服务器来承载我的文件并通过ajax获取它们。所以,我用码头来部署我的服务器。

我的码头映像是httpd:2.4。

我使用以下命令部署了服务器:

代码语言:javascript
复制
docker run -p 80:80 -dit --name file-server \
  -v /sources/docker/apache-server/www/:/usr/local/apache2/htdocs/ httpd:2.4

但是,当我想请求ajax时,结果是:

XMLHttpRequest无法加载http://server/kml/example.kml。请求的资源上没有“访问-控制-允许-原产地”标题。因此,原产地'null‘不允许访问。

因此,我想遵循接下来的步骤How to Enable CORS for Apache httpd server? (Step-By-Step Process)。但我不知道如何在组件的httpd.conf中添加该命令。而且我没有httpd.conf模板来替换它:

代码语言:javascript
复制
v /sources/docker/apache-server/my-httpd.conf:/usr/local/apache2/conf/httpd.conf

请帮我回答这个问题。

EN

回答 2

Stack Overflow用户

发布于 2021-03-17 18:56:46

您可以在shell终端中输入命令docker exec -it nameContainer sh。写入终端:su和这些命令,现在您是您的Docker中的根用户。

现在,在终端中,您不必编写a2enmod headers并重新启动您的停靠程序。

最后一个命令用于激活mod_header,刚才您已经在您的项目根文件中创建了一个.htaccess并在其中写入:

代码语言:javascript
复制
Header add Access-Control-Allow-Origin "*"

这样我就可以正常工作了,不需要在我的机器上安装apache

票数 0
EN

Stack Overflow用户

发布于 2022-03-21 22:46:25

当然,这一点已经在其他地方得到了解决,并且有许多不同的解决方案,然而,这是第一次搜索“cors apache docker”,所以这里是我的2美分:

最好的解决方案(因为它是可审计的和可重复的)是使用docker build命令和一个Dockerfile将apache映像作为您自己映像的基础。我不谈这个问题,因为这不是直接的问题,但基本的部分是相同的。

创建一个带有CORS头位的“额外”apache配置文件:

代码语言:javascript
复制
me@mymachine:~$ docker exec file-server bash -c 'printf "<Directory \"/var/www/html\">\n        Header set Access-Control-Allow-Origin \"*\"\n</Directory>\n" >> /usr/local/apache2/conf/httpd.conf'

me@mymachine:~$ docker exec file-server bash -c 'tail /usr/local/apache2/conf/extra/cors.conf'
<Directory "/var/www/html">
        Header set Access-Control-Allow-Origin "*"
</Directory> 

重新启动apache以使用此新配置:

代码语言:javascript
复制
me@mymachine:~$ docker exec file-server bash -c 'apachectl -k restart'

注意:如果您没有在任何地方配置ServerName,那么您可能会看到与CORS配置无关的警告:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45363822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档