对liferay 6.06 Web服务的跨域请求

时间:2014-01-03 09:22:50

标签: javascript web-services cross-domain liferay liferay-6

我已经能够使用此URL并通过正确的身份验证从liferay Web服务访问json数据:

http://login:password@localhost:8080/tunnel-web/secure/json

但我需要在另一个域名的javascript中查询。

我遇到了经典错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://my.origin.com/' is therefore not allowed access.

我知道我必须在服务器响应头上允许这个源,这可以在jsp中完成,如下所示:

response.setHeader("Access-Control-Allow-Origin", "http://my.origin.com");

问题是,如何为liferay的默认Web服务提供此源?

编辑

我尝试添加 portal-ext.properties 文件:

    axis.servlet.hosts.allowed=
    axis.servlet.https.required=false

    tunnel.servlet.hosts.allowed=
    tunnel.servlet.https.required=false

//empty values are meant to allow any IP...

但它没有改变任何东西:(

PS:我正在使用 liferay 6.06

1 个答案:

答案 0 :(得分:1)

如果你想改变Tomcat,你必须改变liferay web.xml以启用Cors Filter,请点击这篇文章:

Access-Control-Allow-Origin: * in tomcat

但对我而言,最好的方法是使用proxypass模块在tomcat / liferay前面安装Apache Web服务器(httpd)。 Apache服务器作为tomcat的反向代理运行。

在proxypass规则中,您可以设置apache以使用一些额外的标头填充响应。

参考这篇大文章:

How to correctly configure a reverse proxy with Apache, to be used for cross-domain AJAX?