跨域訪問攔截器——OPTION請求

Springboot跨域訪問爲什麼會出現OPTION請求呢?

**  請求方式有兩大類,一類是簡單的請求,一類是非簡單的請求。簡單的請求類似於GET、POST、HEAD等,非簡單的請求如PUT、DELETE等。對於簡單請求,瀏覽器直接發本次請求,而對於非簡單請求,瀏覽器會先發預檢請求,然後再發本次請求。而預檢請求就是OPTION請求,OPTION請求只是檢測作用,並沒有具體數據。對於跨域訪問設置攔截器時,需要對OPTION請求做相應的處理,否則對於非簡單的請求會攔截訪問**

具體詳解OPTION請求請點擊這裏

解決辦法

設置攔截器處對OPTION請求做處理,代碼如下:

@Override
public void addInterceptors(InterceptorRegistry registry){
     registry.addInterceptor(new HandlerInterceptor() {
         //通過控制器之前執行的方法
         @Override
         public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
             System.out.println("執行攔截器");
             //判斷請求方式,排除OPTIONS請求
             if(request.getMethod().toUpperCase().equals("OPTIONS")){
                 return true;//通過所有OPTION請求
             }
             //其他業務攔截功能
             return true;//返回true表示允許通過
         }
     }).addPathPatterns("/**")//添加攔截路徑,攔截所有
             .excludePathPatterns("/XXX/YYY/**");//排除攔截路徑
 }

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章