<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[danger] CORS --- CORS是一個W3C標準,全稱是"跨域資源共享" 它允許瀏覽器向跨源服務器,發出`XMLHttpRequest`請求,從而克服了AJAX只能同源使用的限制 >[info]支持情況 --- 瀏覽器和服務器同時支持CORS, IE10+ >[info] 簡單請求 --- 請求方法: * GET * POST * HEAD 請求頭 * Accept * Accept-Language * Content-Language * Last-Event-ID * Content-Type:只限于三個值`application/x-www-form-urlencoded`、`multipart/form-data`、`text/plain` 1. 瀏覽器請求跨域資源, 請求是成功的, 看圖 ![](https://img.kancloud.cn/8f/ac/8facb450fe85630b02fd92b72320dd01_964x313.png) 2. 瀏覽器會在請求頭添加Origin字段, 表明自己所在(協議+域名+端口), 服務器根據這個值來決定是否同意本次請求, 瀏覽器會接收到200正確的HTTP狀態碼 * 同意需要開啟: 響應頭:Access-Control-Allow-Origin: 同意鏈接的域名(*代表所有) * 不設置, 就是不同意跨域訪問 3. Ajax可以捕獲異常, 拋出跨域請求的錯誤 ![](https://img.kancloud.cn/69/c3/69c3de68fffeb7eef8bc59aaebee2672_1314x163.png) 4. 除非后臺, 設置響應頭res.header("Access-Control-Allow-Origin", "*") ![](https://img.kancloud.cn/93/97/93972b15e8536d5636f504acffe805b5_829x352.png) 有了這個, CORS就可以讓瀏覽器Ajax訪問像同源一樣的資源了, 但是需要后臺支持哦 后臺設置響應頭字段: 關于CORS支持的: * Access-Control-Allow-Origin 設置允許請求的瀏覽器端域名, *代表所有 * Access-Control-Allow-Credentials 為true 的時候, 服務器允許瀏覽器發送Cookie到后臺, 刪除此字段, 不允許攜帶Cookie > 切記, 前端要設置ajaxObj.withCredentials = true 才可以讓瀏覽器帶上cookie > 切記2: cookie還是存在同源策略, 所以不同域名后臺設置cookie不生效 * Access-Control-Allow-Headers 服務器端允許攜帶過來的請求頭 * Access-Control-Expose-Headers 允許前端拿到的響應頭 默認只能拿到以下這些, 如果不設置此字段 * `ache-Control` * `Content-Language` * `Content-Type` * `Expires` * `Last-Modified` * `Pragma` 5. 如果后臺不支持, 前端可以采用代理服務器轉發的方式, 來請求服務器接口 >[info] 非簡單請求 --- 請求方法 * PUT * DELETE 請求頭 自定義名字的 >[warning]問題 --- 會在正式發送請求前, 發送一次OPTIONS請求. 確認下后端是否允許非簡單的請求 ![](https://img.kancloud.cn/35/fd/35fdefd79dd98cdadfb64f3e2ca633c0_885x372.png) 不允許則報錯 ![](https://img.kancloud.cn/0f/3d/0f3dd62cb4339286beafed9e35016d5b_1272x42.png) 解決方式: 服務器端, 需要作出響應設置 * Access-Control-Allow-Methods 允許瀏覽器端的請求方式 例如"GET, POST, DELETE, PUT, OPTIONS" * Access-Control-Allow-Headers 允許瀏覽器端發送的請求頭字段 第一次OPTIONS請求, 查看響應頭 ![](https://img.kancloud.cn/25/4e/254efb32b52f343e268e014203ecd87c_870x473.png) 第二次, 正常發送Ajax請求, 接收結果 ![](https://img.kancloud.cn/dc/cc/dccc8a4476de52ca2c99a0daf5e7f1cd_869x464.png) >[danger] 總結 1. 瀏覽器同源策略, 作出的跨域限制, 但是現在瀏覽器支持了CORS標準, 允許跨域請求, 但是還需要后端支持CORS才可以. 2. Cookie還是存在同源策略的限制, 后端跨域設置前端cookie, 前端Ajax報錯 3. JSONP只支持GET方式, 而CORS都可以支持 4. 非簡單請求, 注意讓后臺支持. 不只是跨域的支持哦
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看