我已经使用SLIM PHP框架创建了一个基本的RESTful服务,现在我正在尝试连接它,以便可以从Angular.js项目访问该服务。我已经了解到Angular支持现成的CORS,我所需要做的就是添加以下行:Header set Access-Control-Allow-Origin "*"
到我的.htaccess文件。
我已经这样做了,我的REST应用程序仍然工作(没有来自坏的.htaccess的500内部服务器错误),但当我试图从test-cors.org测试它时,它抛出了一个错误。
Fired XHR event: loadstart
Fired XHR event: readystatechange
Fired XHR event: error
XHR status: 0
XHR status text:
Fired XHR event: loadend
我的.htaccess文件如下所示
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [QSA,L]
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
是否需要在.htaccess中添加其他内容以使其正常工作,或者是否有其他方法在我的服务器上启用CORS?
9条答案
按热度按时间g9icjywg1#
因为我已经把所有的东西都转发到index.php了,所以我想我应该尝试用PHP而不是.htaccess文件来设置头文件,它成功了!耶!以下是我添加到index.php的内容,以供其他遇到此问题的人参考。
感谢slashingweapon在this question上给出的答案
因为我使用的是Slim,所以我添加了此路由,以便OPTIONS请求获得HTTP 200响应
krcsximq2#
.htaccess
不应该使用add
而不是set
吗?ikfrs5lh3#
这就是我的工作:
xdnvmnnf4#
在此答案Custom HTTP Header for a specific file中,您可以使用
<File>
为单个文件启用CORS,代码如下:您可以放置特定来源(协议+域+可选端口),而不是
"*"
。3df52oht5#
将工作100%,应用于.htaccess:
j2qf4p5b6#
看起来你使用的是slim(2.x)的旧版本。你可以只在.htaccess中添加以下行,而不需要在PHP脚本中做任何事情。
t0ybt7op7#
多亏了迪文,我为我的SLIM应用程序找到了多域访问的解决方案。
在htaccess中:
在index.php中
w41d8nur8#
我尝试了@abimelex解决方案,但在Slim 3.0中,MapOPTIONS请求如下所示:
https://www.slimframework.com/docs/objects/router.html#options-route
apeeds0o9#
对于ubuntu用户:
您必须使用以下命令首先激活标头模块:
然后通过以下方式重新启动Apache:
然后将以下头文件添加到htaccess中: