跨域是一個比較常見的功能了,看看springboot的註解實現
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CrossOrigin {
String[] DEFAULT_ORIGINS = { "*" };
String[] DEFAULT_ALLOWED_HEADERS = { "*" };
boolean DEFAULT_ALLOW_CREDENTIALS = true;
long DEFAULT_MAX_AGE = 1800;
/**
* 同origins屬性一樣
*/
@AliasFor("origins")
String[] value() default {};
/**
* 所有支持域的集合,例如"http://domain1.com"。
* <p>這些值都顯示在請求頭中的Access-Control-Allow-Origin
* "*"代表所有域的請求都支持
* <p>如果沒有定義,所有請求的域都支持
* @see #value
*/
@AliasFor("value")
String[] origins() default {};
/**
* 允許請求頭重的header,默認都支持
*/
String[] allowedHeaders() default {};
/**
* 響應頭中允許訪問的header,默認爲空
*/
String[] exposedHeaders() default {};
/**
* 請求支持的方法,例如"{RequestMethod.GET, RequestMethod.POST}"}。
* 默認支持RequestMapping中設置的方法
*/
RequestMethod[] methods() default {};
/**
* 是否允許cookie隨請求發送,使用時必須指定具體的域
*/
String allowCredentials() default "";
/**
* 預請求的結果的有效期,默認30分鐘
*/
long maxAge() default -1;
}
@RestController
//實現跨域註解
//origin=""代表所有域名都可訪問
//maxAge飛行前響應的緩存持續時間的最大年齡,簡單來說就是Cookie的有效期 單位爲秒
//若maxAge是負數,則代表爲臨時Cookie,不會被持久化,Cookie信息保存在瀏覽器內存中,瀏覽器關閉Cookie就消失
@CrossOrigin(origins = "",maxAge = 3600)
public class UserController {br/>@Resource
private IUserFind userFind;
@GetMapping("finduser")
public User finduser(@RequestParam(value="id") Integer id){
//此處省略相應代碼
}
}