<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 4. CORS 進階之 cookie 處理 #### 1. Set-Cookie 在這一篇文章[CORS進階之設置請求頭信息(三)](http://www.rails365.net/articles/cors-jin-jie-zhi-she-zhi-qing-qiu-tou-xin-xi-san)中,可以使用CORS來設置自定義的請求頭部信息,然而為了安全,默認情況下,瀏覽器的cookie也是不能作為信息傳遞給跨域的服務器的。 第一步,要做的是首先瀏覽器上有cookie。 第一步,是要測試把cookie發送給跨域的服務器。 先來完成第一步,設置cookies。 其實最簡單的是通過javascript來設置,不過這里介紹另一種方法:通過響應頭信息`Set-Cookie`來處理。 ``` add_header 'Set-Cookie' 'name=value'; ``` 上面表示的是響應一個頭部信息叫`Set-Cookie`,瀏覽器得到它的值就會自動設置cookie信息的,鍵為`name`,值為`value`。 還是按照之前的例子,從localhost:3000跨域到nginx服務器localhost:8080。 先訪問一下localhost:8080這臺服務器。 ![](https://box.kancloud.cn/09e7b748d8b57cc0154e6ae195b49f4a_1114x447.png) 現在在localhost這個域上就有`name=value`這樣的cookie信息了。 接著在localhost:3000上把這個cookie信息跨域發送給localhost:8080這臺nginx服務器。 #### 2. Access-Control-Allow-Credentials 要發送帶cookie的請求到跨域服務器中,只需要把`withCredentials`設為`true`即可。 ``` var xhttp = new XMLHttpRequest(); xhttp.open("GET", "http://localhost:8080", true); xhttp.withCredentials = true xhttp.send(); ``` 效果圖如下: ![](https://box.kancloud.cn/1552580915a0227b7ba051c307e00f9d_1304x242.png) 大體的意思是這樣,當`Access-Control-Allow-Origin`為`*`時,又把`withCredentials`設為了`true`,那是不被允許的。 我們先把`Access-Control-Allow-Origin`改為localhost:3000這臺機器。 ``` add_header 'Access-Control-Allow-Origin' 'http://localhost:3000'; ``` 再重新發送跨域請求。 ![](https://box.kancloud.cn/b135e7a64d9ac39bea9a7bafbe1572e4_1306x230.png) 之前`Access-Control-Allow-Origin`為`*`的問題解決了,可是又出現了新的錯誤:在服務器端`Access-Control-Allow-Credentials`應該被設為`true`。 ``` add_header 'Access-Control-Allow-Origin' 'http://localhost:3000'; add_header 'Access-Control-Allow-Credentials' 'true'; ``` 再重新發起新的域跨請求。 ![](https://box.kancloud.cn/06f24133cf6a50b25dfbb0ef73f803cd_663x210.png) 可見,請求是成功的。 但是,服務器能得到那些cookie信息的內容嗎? #### 3. echo指令 在nginx中還是可以輕易獲取到cookie的內容的,那就是通過nginx的變量來獲得。 `$cookie_XXX`這樣的變量就是獲取cookie內容,比如`name=value`這樣的cookie信息可以通過`$cookie_name`變量獲得。 為了驗證要在nginx中把cookie的內容打印出來,我們在這里要利用一個模塊:[echo-nginx-module](https://github.com/openresty/echo-nginx-module)。 它提供了`echo`指令可以輸出變量的內容。 要編譯這個模塊,可以參照我之前的一篇文章:[nginx之編譯第三方模塊(六)](http://www.rails365.net/articles/nginx-zhi-bian-yi-di-san-fang-mo-kuai-liu)。 ``` add_header 'Access-Control-Allow-Origin' 'http://localhost:3000'; add_header 'Access-Control-Allow-Credentials' 'true'; echo "name = $cookie_name"; ``` 現在重新發起跨域請求,來看下響應的信息。 ![](https://box.kancloud.cn/ff9083b24dad91348e0cbe5894ee6568_736x207.png) 果然,服務器上是能獲得cookie的信息的。 完結。 下一篇:[CORS進階之Expose-Headers(五)](http://www.rails365.net/articles/cors-jin-jie-expose-headers-wu)
                  <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>

                              哎呀哎呀视频在线观看