在Web開發中,我們常常會遇到需要請求另一個域名下的接口數據的情況,而這就產生了跨域問題。而使用JSONP解決跨域問題已經不再推薦,現在更多的使用JSON。
那么在Java中如何解決JSON跨域問題呢?一種常見的方式是使用Spring框架提供的CORS(跨源資源共享)支持。
在Spring中,只需要在Controller方法上加上@CrossOrigin注解即可實現跨域訪問。例如:
@RestController public class MyController { @CrossOrigin(origins = "http://localhost:8080") @GetMapping("/getData") public String getData() { // 返回JSON數據 return "{\"name\": \"Tom\", \"age\": 18}"; } }
在這個例子中,我們使用了@GetMapping注解定義了一個獲取數據的接口,而加在這個方法上的@CrossOrigin注解表示允許來自http://localhost:8080這個域名下的請求訪問這個接口。
當然,如果需要允許所有域名的請求訪問這個接口,也可以使用通配符“*”:
@CrossOrigin(origins = "*")
除了使用注解,還可以在配置文件中配置CORS支持。例如,我們在application.properties中添加以下內容:
# 允許來自localhost:8080的請求訪問所有接口 spring.mvc.allow-origin=http://localhost:8080 # 允許跨域請求攜帶憑證信息(如Cookie) spring.mvc.allow-credentials=true # 允許來自localhost:8080的請求訪問指定路徑(多個路徑用逗號分隔) spring.mvc.allow-mapping=/getData
配置完成后,Spring會自動為我們添加CORS支持,允許指定的域名訪問指定的接口。
總之,使用Spring提供的CORS支持,可以方便地解決JSON跨域問題,讓我們的Web開發變得更加順暢。