1. 程式人生 > >spring boot跨域問題--待解決

spring boot跨域問題--待解決

前後端分離的系統通常會出現跨域問題,最簡單的辦法是在每個controller上面添加註解:

@CrossOrigin(origins = "*")

但是,如果要對exception統一進行處理,使用@ControllerAdvice註解一個全域性攔截器後,無法像controller一樣添加註解就可以解決跨域問題,暫時還沒有搜尋到解決辦法,期待哪位大神能給個提示。

package test.common.aop;

import test.tips.ErrorTip;
import test.common.exception.BizExceptionEnum;

import io.jsonwebtoken.JwtException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MaxUploadSizeExceededException;

/**
 * 全域性的的異常攔截器
 *
 */
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 攔截jwt相關異常
     */
    @ExceptionHandler(JwtException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public ErrorTip jwtException(JwtException e) {
        log.error("jwt exception: ", e);
        return new ErrorTip(BizExceptionEnum.TOKEN_ERROR.getCode(), BizExceptionEnum.TOKEN_ERROR.getMessage(), null);
    }

    /**
     * 攔截檔案上傳異常
     */
    @ExceptionHandler(MaxUploadSizeExceededException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public ErrorTip uploadException(MaxUploadSizeExceededException e) {
        log.error("file upload exception: ", e);
        return new ErrorTip(BizExceptionEnum.FILE_SIZE_ERROR.getCode(), BizExceptionEnum.FILE_SIZE_ERROR.getMessage(), null);
    }

}