数据交互 跨域问题
JavaScript的同源政策是互聯網安全的基石,即不同源的網頁之間的資源不能彼此調用彼此的資源的,判斷是否同源的依據是:
協議相同,是http還是https。
域名相同,一級,二級等是否相同
端口相同,服務器默認端口是省略掉了的80端口,用其他端口則需要顯式指定
而事實上為了提升網頁性能,我們常常需要打破同源限制,比如單獨假設圖片服務器以突破瀏覽器同源資源請求數。
?
跨域請求最常用的有JSONP和CORS
JSONP
JSONP的說明見:http://www.cnblogs.com/zhouxiaohouer/p/7900602.html
?
CORS
現在瀏覽器(IE10+)基本上都支持了CORS,所以CORS的關鍵就是服務器是否定義了CORS的接口,所謂接口無非就是是否在響應頭里設置了跨域許可Access-Control-Allow-Origin,
"'Access-Control-Allow-Origin':'*'"表示允許任何客戶端訪問。
?
CORS的具體流程以瀏覽器的簡單請求說明
在請求頭里寫入origin字段,標注同源信息,即協議+域名+端口,此請求到達服務器后,服務器比對origin同源信息是否在跨域許可Access-Control-Allow-Origin范圍內,在的話就正常走請求流程,不在的話就返回一個錯誤,并且被XMLHttpRequest的onerror回調函數捕獲。注意,這種錯誤無法通過狀態碼識別,因為HTTP回應的狀態碼有可能是200。
router.post('/poststh',(req,res,next)=>{res.header('Access-Control-Allow-Origin', '*')console.log(req.body.filter)goodsModel.find((err,doc)=>{if (err) {res.json({status:1,msg:err,})}else{res.json({status:0,msg:req.body.filter})}})})CORS跨域的簡單請求和非簡單請求可以參考阮老師的文章:http://www.ruanyifeng.com/blog/2016/04/cors.html
?
轉載于:https://www.cnblogs.com/zhouxiaohouer/p/8028504.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: FreeBSD 安装过程
- 下一篇: minimun-depth-of-bin