• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    ajax如何跨域請求webservice

    CORS是一個W3C尺度,全稱是"跨域資本共享"(Cross-origin resource sharing)。

    它許可瀏覽器標的目的跨源辦事器,發出XMLHttpRequest請求,從而降服了AJAX只能同源利用的限制。

    東西/原料

    • springboot

    方式/步調

    1. 1

      已springboot項目為例,啟動一個辦事端(9000),一個客戶端(8002),他們端口分歧,利用客戶端請求辦事端數據,模擬CORS

    2. 2

      在客戶端前臺js中添加如下代碼,請求辦事端的一段文本

    3. 3

      辦事端的Controller如圖

    4. 4

      最主要的是:辦事端需要撐持CORS,即辦事端需要贊成來自其他域的請求。在辦事端添加如下代碼,即增添一個過濾器,使其響應跨域請求

    5. 5

      打開界面,請求數據。辦事端啟在9000端口,而客戶端啟在8002,按照同源策略,他們屬于分歧的域,客戶端對辦事端的請求屬于跨域請求。

    6. 6

      從上圖可以發現,一次點擊/msg請求,瀏覽器發了兩次請求,下面我們具體看一下,跨域請求起首會發生OPTIONS請求(預檢請求),標的目的辦事器扣問我要跨域利用Get請求了,你許可嗎?辦事端回應許可,而且你的請求頭中只能包羅如下內容。

    7. 7

      然后瀏覽器發送正式的/msg請求,獲取到了數據

    8. 8

      字段申明:

      Access-Control-Allow-Origin   該字段是必需的。它的值要么是請求時Origin字段的值,要么是一個*,暗示接管肆意域名的請求。

      Access-Control-Allow-Credentials  該字段可選。它的值是一個布爾值,暗示是否許可發送Cookie。

      Access-Control-Expose-Headers

      該字段可選。CORS請求時,XMLHttpRequest對象的getResponseHeader()方式只能拿到6個根基字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。若是想拿到其他字段,就必需在Access-Control-Expose-Headers里面指心猿意馬。

      Access-Control-Max-Age  該字段可選,用來指心猿意馬本次預檢請求的有用期,單元為秒。

    9. 9

      由上可見辦事端撐持跨域是很主要的,前臺Ajax并不需要額為的設置,瀏覽器主動會判定并發出預檢請求。你也可以直接在controller上加注解實現該controller的跨域拜候

    • 發表于 2018-08-01 00:00
    • 閱讀 ( 1133 )
    • 分類:其他類型

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆