首頁 >後端開發 >php教程 >fineuploader 跨子網域上傳檔案 cookie遺失問題的解決

fineuploader 跨子網域上傳檔案 cookie遺失問題的解決

巴扎黑
巴扎黑原創
2016-11-10 09:49:501806瀏覽

目前的專案中,使用到了fineuploader 這個純html5上傳元件,在開發過程中將上傳服務單獨放置在特定子網域下.登入cookie設定的domain 是在根網域下,在後端程式碼中進行使用者登入偵測,發現總會被重定向302到未登入頁面,排查之後發現是ajax xhr請求中未帶cookie造成的

網上大概搜了下,

寫道

原生ajax請求方式:

var xhr = new XMLHttpRequest(); 
xhr.open("POST", "http://xxxx.com/demo/b/index.php", true); 
xhr.withCredentials = true; //支持跨域发送cookies
xhr.send();

的ajax的post方法請求:

$.ajax({
type: "POST",
url: "http://xxx.com/api/test",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function(){
},
error:function(){
}
})

伺服器端設定:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www. xxx.com");

後端進行了相應的調整,前端這塊因為涉及到 fineuploader,在其代碼中簡單搜索了下關鍵字 withCredentials,然後去官方看了下文檔,存在cors 的配置 http: //docs.fineuploader.com/api/options.html#cors

在配置行中加入以下配置就ok了

Js代碼  

cors: {  
                allowXdr: true,// 此参数目前不知道有啥用  
                expected: true,  
                sendCredentials: true  
            }

修改之後,問題解決. 


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn