我需要创建一个apache服务器来承载我的文件并通过ajax获取它们。所以,我用码头来部署我的服务器。
我的码头映像是httpd:2.4。
我使用以下命令部署了服务器:
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模板来替换它:
v /sources/docker/apache-server/my-httpd.conf:/usr/local/apache2/conf/httpd.conf请帮我回答这个问题。
发布于 2021-03-17 18:56:46
您可以在shell终端中输入命令docker exec -it nameContainer sh。写入终端:su和这些命令,现在您是您的Docker中的根用户。
现在,在终端中,您不必编写a2enmod headers并重新启动您的停靠程序。
最后一个命令用于激活mod_header,刚才您已经在您的项目根文件中创建了一个.htaccess并在其中写入:
Header add Access-Control-Allow-Origin "*"这样我就可以正常工作了,不需要在我的机器上安装apache
发布于 2022-03-21 22:46:25
当然,这一点已经在其他地方得到了解决,并且有许多不同的解决方案,然而,这是第一次搜索“cors apache docker”,所以这里是我的2美分:
最好的解决方案(因为它是可审计的和可重复的)是使用docker build命令和一个Dockerfile将apache映像作为您自己映像的基础。我不谈这个问题,因为这不是直接的问题,但基本的部分是相同的。
创建一个带有CORS头位的“额外”apache配置文件:
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以使用此新配置:
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
https://stackoverflow.com/questions/45363822
复制相似问题