phonegap-本地開發如何取伺服器資料,這一直是個很讓人困擾的問題。
特別是在做本地頁面除錯和樣式修改的時候。
簡單的說就是在咱們的api檔案裡面宣告ccess-control-allow-origin。
首先需要在伺服器裡面開啟
apache:apache需要使用mod_headers模組來啟用http頭的設定,它預設是啟用的。你只需要在apache配置檔案的, , 或的配置裡加入以下內容即可:
header set access-control-allow-origin *那麼不同的指令碼有不同的寫法php:只需要使用如下的**設定即可。
<?phpc#**python**知識延伸header(「access-control-allow-origin:*」);
首先需要了解
cors其實出現時間不短了,它在維基百科上的定義是:跨域資源共享(cors)是一種網路瀏覽器的技術規範,它為web伺服器定義了一種方式,允許網頁從不同的域訪問其資源。而這種訪問是被同源策略所禁止的。cors系統定義了一種瀏覽器和伺服器互動的方式來確定是否允許跨域請求。 它是乙個妥協,有更大的靈活性,但比起簡單地允許所有這些的要求來說更加安全。
詳細內容
要使用cors,我們需要了解前端和伺服器端的使用方法。
1、 前端
以前我們使用ajax,**類似於如下的方式:
這裡的「/hfahe」是本域的相對路徑。
請注意,**與之前的區別就在於相對路徑換成了其他域的絕對路徑,也就是你要跨域訪問的介面位址。
我們還必須提供瀏覽器回退功能檢測和支援,避免瀏覽器不支援的情況。
function createcorsrequest(method, url) else if (typeof!= 「undefined」) else現在如果直接使用上面的指令碼進行請求,會看到瀏覽器裡控制台的報錯如下:return xhr;
}var xhr = createcorsrequest(『get』, url);
if (!xhr)
錯誤顯示的很明顯,這是因為我們還未設定access-control-allow-origin頭。
2、 伺服器
伺服器端對於cors的支援,主要就是通過設定access-control-allow-origin來進行的。如果瀏覽器檢測到相應的設定,就可以允許ajax進行跨域的訪問。
http 頭的設定方法有很多,這篇文章裡對各種伺服器和語言的設定都有詳細的介紹,下面我們主要介紹apache和php裡的設定方法。
apache:apache需要使用mod_headers模組來啟用http頭的設定,它預設是啟用的。你只需要在apache配置檔案的, , 或的配置裡加入以下內容即可:
header set access-control-allow-origin *
php:只需要使用如下的**設定即可。
<?php
header(「access-control-allow-origin:*」);
以上的配置的含義是允許任何域發起的請求都可以獲取當前伺服器的資料。當然,這樣有很大的危險性,惡意站點可能通過xss攻擊我們的伺服器。所以我們應該盡量有針對性的對限制安全的**,例如下面的設定使得只有這個域才能跨域訪問伺服器的api。
access-control-allow-origin:
瀏覽器支援情況
上文曾經提到,ie8和ie9在某種程度上可以通過xdomainrequest來提供同樣功能的支援。
iPhone開發之本地通知
本地通知是uilocalnotification的例項,主要有三類屬性 對本地通知的數量限制,ios最多允許最近本地通知數量是64個,超過限制的本地通知將被ios忽略。如果就寫個簡單的定時提醒,是很簡單的,比如這樣 示例寫的很簡單,啟動應用後,就發出乙個定時通知,10秒後啟動。這時按home鍵退出,...
java web開發之本地hosts檔案配置
在進行web開發的時候,通常需要以http localhost或者127.0.0.1之類的訪問本地環境的 但是,如果本地放的 多了,不得不做別的操作,比如埠設定。結果不容易記住啦。我在本地之用的是ubuntu nginx環境,nginx允許設定多個網域名稱,只需要分別指向不同的儲存位置即可。那麼,接...
PhoneGap應用開發對策 如何通過蘋果審核?
摘要 曾有人提出這樣的說法,未來是ios的,更是android,歸根結底還是phonegap的,由於其跨平台開發特性,phonegap受到諸多開發者的青睞,可在這個框架下設計的應用,在最開始接受蘋果審查的時候會遇到一些麻煩,該如何是好?最近在一些開發者社群,有人抱怨蘋果拒絕自己開發的phonegap...