在ajax 請求要加組態
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials:
預設情況下,跨來源請求不提供憑證(cookie、HTTP認證及客戶端SSL證明等)。將withCredentials屬性設為true,可以指定某個請求應該要傳送憑證。如果伺服器接收有憑證的請求,會用下面的HTTP頭部來回應。「Access-Control-Allow-Credentials: true」
#如果發送的是有憑證的請求,但伺服器的相應中沒有包含上面這個頭部,那麼瀏覽器就不會把對應交給JavaScript(於是,responseText中將會是空字串,status的值為0,而且會呼叫onerror()事件處理程序)。另外,伺服器還可以在Preflight回應中發送這個HTTP頭部,表示允許來源發送帶有憑證的請求。
支援withCredentials屬性的瀏覽器有Firefox 3.5+、Safari 4+和Chrome。 IE10及更早版本都不支援。
同時
在新增基本的允許跨網域回應頭之後
需要加入Access-Allow-Credentials:true
另外由於Google的安全策略
當withCredentials 為true 時
ResponseHeader中的Access-Allow-Origin 不能使用通配符'*'
否則會提示
A wildcard '*' cannot be us
ed in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://url' is therefore not allowed access.
其他瀏覽器待測試
在ajax 請求要加組態
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials:
預設情況下,跨來源請求不提供憑證(cookie、HTTP認證及客戶端SSL證明等)。將withCredentials屬性設為true,可以指定某個請求應該要傳送憑證。如果伺服器接收有憑證的請求,會用下面的HTTP頭部來回應。「Access-Control-Allow-Credentials: true」
#如果發送的是有憑證的請求,但伺服器的相應中沒有包含上面這個頭部,那麼瀏覽器就不會把對應交給JavaScript(於是,responseText中將會是空字串,status的值為0,而且會呼叫onerror()事件處理程序)。另外,伺服器還可以在Preflight回應中發送這個HTTP頭部,表示允許來源發送帶有憑證的請求。
支援withCredentials屬性的瀏覽器有Firefox 3.5+、Safari 4+和Chrome。 IE10及更早版本都不支援。
同時
在新增基本的允許跨網域回應頭之後
需要加入Access-Allow-Credentials:true
另外由於Google的安全策略
當withCredentials 為true 時
ResponseHeader中的Access-Allow-Origin 不能使用通配符'*'
否則會提示
A wildcard '*' cannot be used in the 'Access -Control-Allow-Origin' header when the credentials flag is true. Origin 'http://url' is therefore not allowed access.
其他瀏覽器待測試
#以上是如何解決關於Ajax跨域存取 session不能保存等問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!