2013-07-22 66 views
0

最近,我爲移動設備創建了一個PhoneGap應用,使用AngularJS作爲javascript框架。AngularJS和Phonegap Cross Origin訪問

我有一個PHP後端服務於Restful JSON數據,構建在Laravel PHP Framework中。

PhoneGap應用程序通過AngularJS中的$ http服務向我的PHP服務器請求數據,它在我的手機上完美運行。

現在我想暫時讓我的PhoneGap應用程序在網站上可用,而不是在應用程序中。 所以我把PhoneGap項目移到了一個web服務器上,但是在這裏它根本不起作用。 嘗試在我自己的瀏覽器中使用webapp時出現這些錯誤。

「原產地http://somewebsite.com不被Access-Control-Allow-Origin允許」。

我試圖一些配置參數添加到AngularJS如:

刪除$ httpProvider.defaults.headers.common [ 'X-請求-隨着'];

但似乎沒有任何幫助。

我覺得它有點奇怪,它作爲PhoneGap應用程序在我的手機和我的iPhone模擬器,但它不適用於我的新的Web服務器域。

任何人都知道該怎麼辦?

+0

你如何管理使用Web服務在電話中不允許訪問起源真實? –

回答

3

最安全的方式是使用JSONP。 在laravel你會做這樣的事情:如果你只是想訪問開/公共

Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback')); 

然而,你可以添加以下到您的公共/ .htaccess文件

Header set Access-Control-Allow-Headers: "Accept,Origin,Content-Type,X-Requested-With" 
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS" 
Header set Access-Control-Allow-Credentials: "true" 
Header set Access-Control-Allow-Origin "*" 
+0

感謝您的回答。 僅僅向公衆開放我的REST Api會足夠安全嗎? Iv已經在Laravel的所有路由中創建了AUTH過濾器,因此只有經過身份驗證的用戶才能訪問該API。 – PeterPanen

+0

如果你有擔保,我不明白爲什麼不。 – Ryun

0

當從移動網站訪問網絡服務時,他們應該有訪問來源允許在PHP中啓用真實集合或jsonp(非常安全的方式)。由於與應用程序不同,移動網站JavaScript無法通過瀏覽器訪問其他域。

檢查這些鏈接:

allow cross domain ajax requests