Ajax跨域問(wèn)題是由瀏覽器的同源策略造成的, 我們可以通過(guò)協(xié)議+域名+端口確定一個(gè)源. 你可以把一個(gè)項(xiàng)目理解為一個(gè)源. Ajax請(qǐng)求可以對(duì)源內(nèi)的資源發(fā)起訪問(wèn), 但是不同源之間進(jìn)行Ajax就會(huì)有問(wèn)題.簡(jiǎn)單來(lái)說(shuō)就是,前臺(tái)頁(yè)面ajax獲取數(shù)據(jù)的地址和前臺(tái)頁(yè)面地址不是同一個(gè)站點(diǎn),或者不是同一個(gè)訪問(wèn)地址。
如果直接使用ajax訪問(wèn),會(huì)有以下錯(cuò)誤:
最簡(jiǎn)單的解決方式就是在ajax訪問(wèn)文件的頭部添加header標(biāo)簽來(lái)允許網(wǎng)站訪問(wèn),允許固定的域名訪問(wèn)
header('Access-Control-Allow-Origin:http://www.cnwenhui.com');
上面的代碼是允許該網(wǎng)址進(jìn)行請(qǐng)求。也可以添加多個(gè)網(wǎng)址,允許多個(gè)域名訪問(wèn),添加方法略有不同,傳入數(shù)組
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; $allow_origin = array( 'http://client1.runoob.com', 'http://client2.runoob.com' ); if(in_array($origin, $allow_origin)){ header('Access-Control-Allow-Origin:'.$origin); }
如果是不考慮安全方面的問(wèn)題,則直接允許所有網(wǎng)址訪問(wèn)就可以
header('Access-Control-Allow-Origin:*');
一般我在項(xiàng)目中使用最后一種較多,在不涉及隱私和金錢方面或者需要安全性較高的接口,一般允許所有訪問(wèn)。
下一篇: 介紹一下a標(biāo)簽的用法
關(guān)鍵詞: