跨域请求生命周期6.06 Web服务

我已经能够使用这个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的默认webservices的这个来源?

编辑:

我试着添加一个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


如果您想更改Tomcat,则必须更改liferay web.xml以启用Cors Filter,请按照以下文章进行操作:

Access-Control-Allow-Origin:*在tomcat中

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

在proxypass规则中,你可以设置apache来用一些额外的头文件来填充响应。

请参阅这篇大文章:

如何使用Apache正确配置反向代理,以用于跨域AJAX?

链接地址: http://www.djcxy.com/p/60155.html

上一篇: Cross domain requests for liferay 6.06 web services

下一篇: Liferay With Multiple Server Instances