SSM的跨域問題解決


1.跨域解決方案CORS

CORS是一個W3C標准,全稱是"跨域資源共享"(Cross-origin resource sharing)。CORS需要瀏覽器和服務器同時支持。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低於IE10。

它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。整個CORS通信過程,都是瀏覽器自動完成,不需要用戶參與。對於開發者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。瀏覽器一旦發現AJAX請求跨源,就會自動添加一些附加的頭信息,有時還會多出一次附加的請求,但用戶不會有感覺。因此,實現CORS通信的關鍵是服務器。只要服務器實現了CORS接口,就可以跨源通信。

 

2在Controller的對應的方法里加入

//指定跨域訪問的的域
response.setHeader("Access-Control-Allow-Origin", "http://localhost:8081");
//操作cookie
response.setHeader("Access-Control-Allow-Credentials", "true");

例如:

@Controller
public class AddressController extends BaseController {

	@Autowired
	private IAddressService addressService;
	
	@RequestMapping("add")
	@ResponseBody
	public ResponseResult<Void> handleAddNew(HttpSession session,Address address){
            
               //指定跨域訪問的的域
              response.setHeader("Access-Control-Allow-Origin", "http://localhost:8081");
           //操作cookie
         response.setHeader("Access-Control-Allow-Credentials", "true");
		addressService.addressNew(address);
		return new ResponseResult<Void>();
	}
	
}              

  

或者使用SpringMVC跨域注解

springMVC的版本在4.2或以上版本,可以使用注解實現跨域, 我們只需要在需要跨域的方法上添加注解@CrossOrigin即可

@CrossOrigin(origins="http://localhost:8081",allowCredentials="true")  

例如:

@Controller
public class AddressController extends BaseController {

	@Autowired
	private IAddressService addressService;
	
	@RequestMapping("add")
	@ResponseBody
     @CrossOrigin(origins="http://localhost:9105",allowCredentials="true") 
public ResponseResult<Void> handleAddNew(HttpSession session,Address address){  
  addressService.addressNew(address);
       return new ResponseResult<Void>();
}
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM