【发布时间】:2016-03-03 07:36:30
【问题描述】:
我正在尝试从我的新 Angular 应用程序调用 REST Web 服务。发出请求时,我收到此错误:
XMLHttpRequest 无法加载 http://localhost:8080/WebService。不 请求中存在“Access-Control-Allow-Origin”标头 资源。 Origin 'http://localhost' 因此不允许访问。
我发现这是因为浏览器不允许这样的操作。
在 StackOverflow 中 one of the solutions 是禁用一些安全选项。我试过这样做,但没有成功,我得到了同样的错误。
然后another solution 建议将项目移动到服务器。所以我将我的项目移动到 WAMP 中的 www 文件夹中。它不起作用,因为我需要激活headers_module,然后修改httpd.conf 添加这个:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</IfModule>
所以我激活了模块并修改了通用配置文件(不记得如何在我的 web 项目中执行此操作)并重新启动 WAMP。还是不行。
我唯一能做的就是在 Eclipse JEE 中创建一个 Web 项目并在 Tomcat 服务器上运行它。但我真的不想这样做。
我该如何解决这个问题?
编辑我还尝试将其添加到我的 Angular 应用程序中:
app.config([ '$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
问题依然存在。
【问题讨论】:
-
嗨,如果你还没有这样做的话。尝试在您的 Angular 应用程序中添加以下代码,希望问题能够得到解决。
your_app_name.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; }]); -
是的,我忘了说我也试过了。同样的问题。
-
我可以知道您使用什么作为后端(服务器)吗?
-
我提到我正在使用 WAMP 并修改了 apache 模块和配置,所以...显然是 Apache。
-
您必须在 .htaccess 或您可以在 apache Access-Control-Allow-Methods 中配置的任何位置指定此标头:POST、PUT、DELETE、GET、OPTIONS Access-Control-Allow-Headers : X-Requested-With,ORIGIN, Content-type.
标签: angularjs apache cross-domain wamp