您好我正在使用Glassfish 4.1.1作爲服務器和Java EE 7在Java中的REST api,並作爲前端我也使用AngularJS NetBeans的。Java REST啓用CORS(訪問控制 - 允許來源)Glassfish
我下面這個簡單的教程 https://www.youtube.com/watch?v=2B3qL7XtKnE 並創建了回成功地,但是當我嘗試使用GET調用從前端我得到的常見錯誤訪問控制允許來源。在視頻中,女孩使用NetBeans附帶的跨源共享過濾器模板並修復此問題。
package entities;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class awdawdCrossOriginResourceSharingFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) {
response.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE");
response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type");
}
}
但我仍然收到同樣的錯誤。看過很多指南和教程,但無法修復它。 注意:我是java,netbeans等的初學者。因此,您可以給我的任何信息都會有所幫助。
由於
這裏是從瀏覽器登錄的輸出:
XMLHttpRequest cannot load http://localhost:8080/AngularBackEnd/rs/customer. Origin http://localhost:8383 is not allowed by Access-Control-Allow-Origin. (09:09:12:047 | error, javascript) at app/index.html
呼叫從角:再次
empService.factory('Emps', function($resource){
return $resource('http://localhost:8080/AngularBackEnd/rs/customer', {}, {
findAll:{method:'GET', isArray:true}
})
});
感謝。
EDITED
現在我用https://github.com/ebay/cors-filter和跟隨他的指導。添加的web.xml
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<filter>
<filter-name>CORS Filter</filter-name>
<filter-class>org.ebaysf.web.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
爲了測試我跑的命令:
curl -D -"http://localhost:8080/BackEndTest/webresources/service.customer"
這給了我:
Server: GlassFish Server Open Source Edition 4.1.1
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.1.1 Java/Oracle Corporation/1.8)
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type
Content-Type: application/xml
Date: Fri, 09 Sep 2016 17:50:00 GMT
Content-Length: 6875
因爲它表明它給我的訪問控制需要的,但我仍然像以前一樣得到相同的錯誤。
您是否將應用容器配置爲使用您創建的過濾器? –
嗨,我剛剛讀過它,但我不知道我可以在哪裏配置它。 – VictorS
[如何在JAX-RS Web服務上啓用跨域請求?](http://stackoverflow.com/questions/23450494/how-to-enable-cross-domain-requests-on-jax-rs-網絡服務) –