如何使用 Joomla 作为服务器配置跨域资源共享 (CORS)?
Posted
技术标签:
【中文标题】如何使用 Joomla 作为服务器配置跨域资源共享 (CORS)?【英文标题】:HowTo configure Cross Origin Resource Sharing (CORS) with Joomla as server? 【发布时间】:2013-03-22 16:54:48 【问题描述】:我正在编写一个嵌入在Joomla 上运行的网站中的网络应用程序。在客户端,我使用的是 AngularJS。 Angular 的 $resource
对象遵循跨域资源共享的模式——即它在发出任何 GET
请求之前发出 OPTIONS
请求。
在 Joomla 中,我的一个控制器中有一个 task
,它接收客户端的请求,在 Joomla 中执行一些身份验证逻辑,然后用数据进行响应。如果我提出一个简单的GET
请求,它会做出适当的响应。但是,我不知道如何让 Joomla 在收到OPTIONS
请求时给出适当的“OK”响应。
是否有一种特定于 Joomla 的方法来实现这一点? 如果没有,如何使用纯 php 回复 OPTIONS
?我的搜索结果一片空白。
(如果有什么不同,这最终将是同源请求。在我们的开发过程中它只是跨域。但是,我相信Angular无论如何都会发出OPTIONS
请求。)
【问题讨论】:
你为什么关心选项?我使用 $resource,但我觉得它不存在。 我可以解决它,但我正在努力做到正确并遵守规范。 【参考方案1】:这是一个如何使 CORS 工作的示例:
假设你在这个页面 origin.com/test.php 并且你在这个页面上的 javascript 向 target.com 发出请求。
要发起跨域请求,浏览器会发送带有 Origin HTTP 标头的请求。此标头的值是为页面提供服务的域 (origin.com)。所以在这种情况下,它将是:
来源:http://origin.com
如果 target.com 支持 CORS,则需要在响应中使用 Access-Control-Allow-Origin HTTP 标头进行回复。标头的值表示允许哪些源站。
访问控制允许来源:http://origin.com
要允许来自所有域的访问,target.com 需要发送 HTTP 标头:
访问控制允许来源:*
欲了解更多信息:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
【讨论】:
我在网上找到的关于 CORS 的最简单解释:)以上是关于如何使用 Joomla 作为服务器配置跨域资源共享 (CORS)?的主要内容,如果未能解决你的问题,请参考以下文章