2017-06-06 45 views
2

我正在構建一個使用Spring 5路由器函數映射請求的Web應用程序休息控制器。如何在路由器功能中允許CORS?

@RestController 
public class AdminRest { 

public RouterFunction<ServerResponse> route() { 
    return RouterFunctions 
      .route(RequestPredicates.GET("/admin/organizations"), this::getOrganizations); 
} 
} 

讓Angular 4項目充當其餘控制器的使用者。

public getOrganizations(): Observable<OrganizationsList> { 
return this.http.get(this.getOrganizationsUrl) 
    .map((res: Response) => res.json()) 
    .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
} 

它會返回該錯誤

的XMLHttpRequest無法加載http://ip:port/admin/organizations。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問原產地'http://localhost:3000'。該響應的HTTP狀態碼爲500.}

如何在CORS中使用Spring 5路由器功能?

+0

您可以用'.OPTIONS'不只是'.GET'作爲CORS的工作原理是首先發送一個選項請求來獲得頭與他們的權限。 –

+0

@MartinBarker - 沒有工作 「XMLHttpRequest無法加載http:// ip:port/admin/organizations。對預檢請求的響應未通過訪問控制檢查:不存在'Access-Control-Allow-Origin'標頭因此不允許Origin'http:// localhost:3000'訪問,響應的HTTP狀態碼爲500.「 –

+0

所以你有一個代碼錯誤,防止它響應選項請求使用類似ARC插件的鉻,並以這種方式進行調試看看你的服務器發送什麼錯誤,如果可以的話,如果不打開服務器上的錯誤日誌記錄並去日誌拖網 –

回答

0

你能不能做註解

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600) 

請參閱Spring CORS documentation更多信息

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18584735) – thewaywewere

相關問題