ajax跨域請求(SpringMVC)

什么是跨域

不同協議 不同域名 不同子域 不同端口 均為跨域
特別的:一個域名和其對應的ip地址也算跨域
具體見下表


跨域請求無效

默認情況下,比如在localhost:63342下使用ajax請求localhost:8800

 $.get("http://localhost:8080/api/getProducts")

會發生錯誤:

XMLHttpRequest cannot load http://www.baidu.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.

解決方案

只介紹一種解決方案
在http Response header中加入“Access-Control-Allow-Origin”字段,其值設置為發起請求的域名;或者*,表示所有域名都可以跨域對此域名進行訪問

函數參數中加入HttpServletResponse
調用其setHeader函數,在header中加入相應字段
代碼如下

@ResponseBody
@RequestMapping(value={"api/getproducts.json"})
public String getProducts(HttpServletResponse responce){
    responce.setHeader("Access-Control-Allow-Origin","*");
    return JSON.toJSONString(productService.findAllProducts());
}

還有其他解決方案,比如使用jsonp,在此不做介紹

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 什么是跨域? 2.) 資源嵌入:、、、等dom標簽,還有樣式中background:url()、@font-fac...
    電影里的夢i閱讀 2,389評論 0 5
  • 前言:對于跨域請求,很早之前就有去了解過,但因為一直關注的都是服務器后端開發,故也就僅僅停留在概念的理解上而沒有機...
    ken_ljq閱讀 89,896評論 6 128
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,803評論 24 1,002
  • 他們的故事平平淡淡,他們的經歷普普通通,但也一樣走到了今天。 一?人物的介紹 那個男孩聰聰,從小特別惹女孩...
    詩熙兒閱讀 478評論 5 2