問(wèn)題描述

《thinkphp實(shí)現(xiàn)短信驗(yàn)證注冊(cè)》中,小編不止記錄了短信驗(yàn)證碼的實(shí)現(xiàn)方法,同時(shí)還記錄了圖片驗(yàn)證碼的實(shí)現(xiàn)方法。
本地使用,一切正常;后端項(xiàng)目和前端項(xiàng)目都部署到服務(wù)器,一切正常;后端項(xiàng)目部署到服務(wù)器,并設(shè)置允許跨域訪問(wèn)后,本地前端項(xiàng)目使用服務(wù)器上后端項(xiàng)目接口時(shí),問(wèn)題來(lái)了:
首先,使用postman測(cè)試獲取圖片驗(yàn)證碼接口和驗(yàn)證圖片驗(yàn)證碼接口,正常。
然后,在html中使用獲取圖片驗(yàn)證碼接口,正常;最后,在JS中使用驗(yàn)證圖片驗(yàn)證碼接口,出錯(cuò)?。?!

分析

通過(guò)問(wèn)題描述,我們看出,問(wèn)題出現(xiàn)在跨域上。那么,有兩種可能,一種是因?yàn)榭缬蛟O(shè)置不正確;一種是因?yàn)閠hinkphp本身的問(wèn)題。

采用另外一種跨域配置,問(wèn)題依然存在。那就是thinkphp本身的問(wèn)題了,經(jīng)查找資料,問(wèn)題定位在thinkphp的session跨域上。

跨子域解決辦法

其實(shí)不管是ThinkPHP還是php本身,在解決session跨域問(wèn)題的時(shí)候都需要設(shè)置session.cookie_domain。
針對(duì)session跨域這一問(wèn)題的解決方法主要有以下幾種:
第一種情況:如果目錄下沒(méi)有.htaccess這個(gè)文件,也就是沒(méi)有采取url偽靜態(tài)的話,那么,在conf/config.php的第一行加上:

ini_set('session.cookie_domain',".domain.com");//跨域訪問(wèn)Session

這時(shí)如果你開(kāi)啟了調(diào)試,那么可以用!但關(guān)閉了調(diào)試,就不管用了!

第二種情況:如果你目錄下有.htaccess這個(gè)文件,那么你在根目錄,index.php的第一行加入:

        		

網(wǎng)友評(píng)論