2013-04-01 101 views
1

我正在編寫嵌入在運行於Joomla的網站內的網絡應用程序。在客戶端,我使用AngularJS。 Angular的$resource對象遵循跨源資源共享的模式 - 即它在發出任何GET請求之前發出OPTIONS請求。如何配置與Joomla作爲服務器的跨源資源共享(CORS)?

在Joomla中,我有一個task在我的一個控制器中,它接收客戶端的請求,在Joomla中執行一些認證邏輯,然後用數據響應。如果我提出一個簡單的GET請求,則會做出適當的響應。但是,我無法弄清楚如何讓Joomla在收到OPTIONS請求時給出相應的「OK」響應。

是否有Joomla特定的方式來實現這一點?如果不是,如何使用普通PHP對OPTIONS進行響應?我的搜索正在畫空白。

(如果這有什麼差別,這最終將是一個同源的要求。這是唯一一個跨原產地在我們的發展過程,但我相信,角會使OPTIONS要求不管。)

+0

你爲什麼關心選項?我使用$資源,我不覺得它存在。 –

+0

我可以解決它,但我正在努力做到正確,堅持規格。 – Benmj

回答

1

這是如何使CORS工作的一個例子:

可以說你在這個頁面origin.com/test.php,你在這個頁面上的JavaScript向target.com發出一個請求。

要發起一個跨源請求,瀏覽器會發送帶有HTTP頭的請求。此標頭的值是爲頁面提供服務的域(origin.com)。所以在這種情況下,這將是:

來源:http://origin.com

如果target.com支持CORS,則需要在響應中的訪問控制允許來源HTTP頭回答。標題的值指示允許哪些源網站。

訪問控制允許來源:http://origin.com

以允許從所有域進行訪問,target.com需要發送的HTTP標頭:

訪問控制允許來源:*

欲瞭解更多信息:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

+0

最好的最簡單的解釋我已經在網上找到的CORS :) – matiu