我正在使用 cxf.jaxrs apache-cxf-3.1.4编写我的REST服务器。 客户:角js
适用于Chrome Advance Rest Client应用和Java rest客户端。但是网络应用程序失败了,
服务器代码:
Class ABC {
protected Server() throws Exception {
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(CustomerService.class);
sf.setResourceProvider(CustomerService.class,
new SingletonResourceProvider(new CustomerService()));
sf.setAddress("http://localhost:9000/");
sf.create();
}
}
资源代码:
class BCD {
@GET
@CrossOriginResourceSharing(allowAllOrigins = true, allowOrigins = {"http://localhost:56696", "http://localhost:9001", "*"}/*, allowCredentials = true*/,allowHeaders="*")
@Path("/offices/{id}/")
@Produces("text/plain")
public String getCustomer(@PathParam("id") String id) {
ObjectMapper om = new ObjectMapper ();
return om.writeValueAsString("ABC");
}
客户端错误: XMLHttpRequest无法加载http://localhost:9000/office/offices/123。对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' http://localhost:56696'因此不允许访问。
在网络应用中:
index.html代码
$ scope.sendName = function(){ var headers = { &#39;访问控制 - 允许 - 来源&#39;:&#34; &#34;, &#39;访问控制 - 允许 - 标题&#39;内容类型,X-Requested-With&#39;, &#39;访问控制 - 允许 - 方法&#39;:&#39; POST,GET,OPTIONS,PUT&#39;, &#39;内容类型&#39;:&#39; application / json;字符集= UTF-8&#39 ;, &#39;接受&#39; <&#39; / *&#39; };
var response = $http({
method: "GET",
headers: headers,
url: 'http://localhost:9001/office/offices/1',
responseType: "json"
}).success(function (data) {
console.log("Auth.signin.success!")
}).error(function (data, status, headers, config) {
console.log("Auth.signin.error!")
});
如何解决此问题