我已经部署了一个基于Blade CLI blade.rest示例的OSGi模块,并将其修改为返回响应而不是纯文本。这里是类:覆盖CORS配置
package com.autentia.api.rest.users;
import org.osgi.service.component.annotations.Component;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Collections;
import java.util.Set;
@ApplicationPath("/users")
@Component(
immediate = true, property = {"jaxrs.application=true"},
service = Application.class
)
public class UsersRestService extends Application {
@Override
public Set<Object> getSingletons() {
return Collections.singleton(this);
}
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getUsers(@Context HttpServletRequest request) {
System.out.println(request.getRemoteAddr());
String json = "{\n" + " \"value\": \"ok\"\n" + "}";
return Response
.status(200)
.header("Access-Control-Allow-Origin", "*")
.entity(json)
.build();
}
}
(这在当地工作,如果我删除.header("Access-Control-Allow-Origin", "*")
)
当我做了一份请愿书服务器出现问题的反应有两种访问控制,访问原产地性质,一个设置为“*”(这是我想要的),另一个设置为发送它的IP。响应如下:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:3000
Access-Control-Allow-Origin:*
Content-Length:19
Content-Type:application/json
Date:Wed, 12 Apr 2017 15:23:38 GMT
Server:Apache-Coyote/1.1
Set-Cookie:JSESSIONID=CF771CD0FAECDAF226D153FB05875CC3; Path=/; HttpOnly
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Request-URL:http://localhost:8080/o/api/users
X-XSS-Protection:1
正如您所见,有两个不被接受的Access-Control-Allow-Origin。我应该从哪里开始寻找?我应该修改Tomcat的web.xml吗?我已经看过portal.properties
和system.properties
但我还没有看到一个属性,使该头。
谢谢。在CATALINA_BASE/conf/web.xml
http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter
我申请中所提到的过滤器链接到Liferay的web.xml,问题依然存在。两个属性Access-Control-Allow-Origin发送到客户端,这是不允许的。 –
我打算在该文件中查找它,如果在该文件中找到该文件,请将其删除。但是现在你已经添加了它,你可以从你的应用程序代码中移除标题调用,对吧? – sideshowbarker
是的,这正是我所尝试的,但然后唯一发送的头是与主机,而不是*。 –