CORS不会在MAMP本地主机上启用

7

我在本地机器上用PHP构建了一个RESTful API,一切都运行得很完美。预检请求发送正确的响应等等,由PHP处理的所有内容都如同梦幻般顺畅。

但是,如果我尝试访问公共文件夹中的图像(在这种情况下通过JavaScript进行编程),我会遇到令人愤怒的:

Access to XMLHttpRequest at 'http://localhost/tmp/avatars/user.jpg' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已经在公共根目录的.htaccess文件中以及在MAMP Apache <Directory><VirtualHost>指令中设置了以下内容,但它只是拒绝工作。
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "*"

CORS在大多数情况下都很棘手,但这简直是荒谬。为什么它不起作用?

有任何想法吗?

2个回答

15
将MAMP中Apache文件夹下的httpd.conf文件修改,并在Directory标签(第204-208行)中添加以下代码。
<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All
    Header set Access-Control-Allow-Origin "*"  
</Directory>

你可以使用nano打开并修改它。

#nano /Applications/MAMP/conf/apache/httpd.conf

然后重新启动您的MAMP服务器,应该可以正常工作。

我也是这样解决了同样的问题。

此外,您可以使用名为“Allow CORS: Access-Control-Allow-Origin”的Google Chrome扩展程序来解决此问题。

但请注意,这仅适用于您的Chrome浏览器。最有效的解决方案是第一个,修改服务器上的配置文件。

祝你好运


谢谢,这确实有效。当时我安装了Chrome扩展程序,问题就解决了。 - spice

6

提供信息,之前的解决方案对我无效。我使用的是MAMP PRO 6.0.1。

我的解决方法是添加以下内容:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"

对于指令的附加参数:

MAMP Pro Apache配置


对于旧版本的MAMP Pro,请在第690-728行的<VirtualHost></VirtualHost>标签中添加以下标题: ... Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept" 重新启动服务器,完成。 - Lukáš Strišovský
这对我在MAMP Pro 6上也起作用了,而被接受的答案则没有。 - Brimby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接