跨域問題及解決(2)——CORS

最近項目中遇到跨域的問題,擬採用CORS的方法進行解決。糾結了好幾天,被一起的小夥伴解決掉了這個問題。^_^

瀏覽器報錯:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的問題,如果用jsonp或者proxy的方式進行修改的話未免需要太大的工程量,所以採用CORS這種比較簡單高效的技術。相比JOSP的方式,CORS更爲高效。JSONP由於它的原理只能實現GET請求,而CORS支持所有類型的HTTP請求。使用CORS,可以使用普通的ajax實現跨域,這對於前端來說是極大的福音了,這個技術被現在大多數瀏覽器所普遍支持,因爲跨域已經是普遍的要求,瀏覽器肯定會逐漸流出適當的‘後門’出來專門用以跨域。 

1.服務器端對於CORS的支持,是通過設置Access-Control-Allow-Origin來進行的。如果瀏覽器檢測到相應的設置,就可以允許Ajax進行跨域的訪問,也就是相應的‘後門’。

設置Apache:Apache需要使用mod_headers模塊來激活HTTP頭的設置,它默認是激活的。你只需要在Apache配置文件的<Directory>, <Location>, <Files>或<VirtualHost>的配置里加入

Header set Access-Control-Allow-Origin *  
在PHP文件中設置:

<?php  
 header("Access-Control-Allow-Origin:*");  

配置的含義是允許任何域發起的請求都可以獲取當前服務器的數據。當然,這樣有很大的危險性,惡意站點可能通過XSS攻擊我們的服務器。所以我們應該儘量有針對性的對限制安全的來源,例如下面的設置使得只有http://blog.csdn.net這個域才能跨域訪問服務器的API。

Access-Control-Allow-Origin: http://blog.csdn.net  

一篇不錯的文章http://blog.csdn.net/hfahe/article/details/7730944

http://enable-cors.org/外國一篇專門講CORS的。對於各種情況下的配置講的很詳細,值得一閱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章