日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring,REST,Ajax和CORS

發布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring,REST,Ajax和CORS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設您正在為客戶端開發基于JavaScript的項目,并且他通過其余的Web服務向服務器發出Ajax請求,那么您可能會遇到一些麻煩,尤其是如果雙方都在單獨的域中。

實際上,出于安全原因,未授權從一個域A到另一域B的Ajax請求。

幸運的是,W3C引入了所謂的CORS(跨源資源共享),它為服務器提供了更好地控制跨域請求的可能性。

為此,服務器必須在響應中添加HTTP標頭,以向客戶端指示允許的來源。

此外,如果您使用自定義標頭,則出于安全考慮,瀏覽器將無法讀取它們,因此您必須指定要公開的標頭。 因此,如果您無法在JavaScript代碼中檢索自定義的HTTP標頭值,則應閱讀下一步

標頭列表:

訪問控制允許來源

Access-Control-Allow-Origin: <origin> |?*

origin參數指定可以訪問資源的URI。 瀏覽器必須執行此操作。 對于沒有憑據的請求,服務器可以將“ *”指定為通配符,從而允許任何源訪問資源。

訪問控制公開標頭

Access-Control-Expose-Headers: X-My-Header

此標頭使服務器允許瀏覽器訪問的白名單標頭。 添加自定義標頭時,這非常有用,因為將標頭添加到“ Access-Control-Expose-Headers”標頭中,可以確保您的瀏覽器能夠讀取它們。

訪問控制最大年齡

Access-Control-Max-Age: <delta-seconds>

該標頭指示可以將預檢請求的結果緩存多長時間。

訪問控制允許方法

Access-Control-Allow-Methods: <method>[, <method>]*

指定訪問資源時允許的一種或多種方法。 用于響應預檢請求。 上面討論了請求被預檢的條件。

訪問控制允許標題

Access-Control-Allow-Headers:?<field-name>[, <field-name>]*

用于響應預檢請求,以指示發出實際請求時可以使用哪些HTTP標頭。

現在讓我們看看如何使用Spring添加此標頭

首先,我們需要創建一個實現Filter接口的類:

package hello; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component;public class CORSFilter implements Filter {public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest request= (HttpServletRequest) req;response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Allow-Headers", "x-requested-with");response.setHeader("Access-Control-Expose-Headers", "x-requested-with"); chain.doFilter(req, res);} }

現在,我們只需要將過濾器添加到servlet上下文中:

@Configuration public class ServletConfigurer implements ServletContextInitializer {@Overridepublic void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {servletContext.addFilter("corsFilter", new CORSFilter());} }

所有人,您現在可以跨域請求并使用自定義的HTTP標頭!

翻譯自: https://www.javacodegeeks.com/2014/07/spring-rest-ajax-and-cors.html

總結

以上是生活随笔為你收集整理的Spring,REST,Ajax和CORS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。