跨域,指的是瀏覽器不能執行其餘網站的腳本。它是由瀏覽器的同源策略形成的,是瀏覽器施加的安全限制。php
使用ajax請求訪問其餘服務器的數據,此時,客戶端會出現跨域問題.ajax
localhost和127.0.0.1雖然都指向本機,但也屬於跨域。apache
如何實現跨域?(如下是經常使用,我本身項目使用到的)json
一、JSONP:api
全部,經過Chrome查看全部JSONP發送的Get請求都是js類型,而非XHR。跨域
要注意JSONP只支持GET請求,不支持POST請求。瀏覽器
二、apache設置反向代理(設置url映射解決跨域):安全
三、PHP端修改header(XHR2方式)服務器
在php接口腳本中加入如下兩句便可:cors
header('Access-Control-Allow-Origin:*');//容許全部來源訪問
header('Access-Control-Allow-Method:POST,GET');//容許訪問的方式
4.cors
Cross-Origin Resource Sharing(CORS)跨域資源共享是一份瀏覽器技術的規範,提供了 Web 服務從不一樣域傳來沙盒腳本的方法,以避開瀏覽器的同源策略,確保安全的跨域數據傳輸。現代瀏覽器使用CORS在API容器如XMLHttpRequest來減小HTTP請求的風險來源。與 JSONP 不一樣,CORS 除了 GET 要求方法之外也支持其餘的 HTTP 要求。服務器通常須要增長以下響應頭的一種或幾種:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
跨域請求默認不會攜帶Cookie信息,若是須要攜帶,請配置下述參數:
"Access-Control-Allow-Credentials": true // Ajax設置 "withCredentials": true