使用通配符提供Access-Control-Allow-Origin

时间:2011-05-26 17:31:19

标签: php ajax same-origin-policy access-control

我正在创建一个页面,当另一个特定字符串作为GET变量提供时,该页面响应具有特定字符串的AJAX请求。为了避免出现“同源”策略的问题,我发现我可以在页面顶部包含这行PHP:

header('Access-Control-Allow-Origin: *');

没有任何敏感数据被传递,它实际上是来自几个不同域的来回传递的关键词(它是一个SEO相关的应用程序)。因此,数百个不同的域将使用它,所以如果可能的话我想避免指定每个域。使用此生产线有任何风险吗?如果是这样,他们是什么?

此外,如果此网页位于HTTPS网址下,是否仍然可以访问?

欢迎提出任何建议,建议或疑虑。谢谢!

1 个答案:

答案 0 :(得分:9)

如果访问真的是公开的,我会说这是一个很好的解决方案。但是,如果要限制对站点的访问,您可能希望明确列出允许的每个域来源。

由于您说您的回复中不包含任何敏感信息,因此您可能无需担心通过HTTPS托管服务。原因之一是客户端HTTPS页面尝试访问非HTTPS服务。在这种情况下,我猜他们会收到关于调用AJAX服务时发送/接收的不安全信息的警告,甚至可能只是一个无声的失败。如果这是一个很常见的情况,那么我会说看看HTTPS服务。确保您的HTTPS证书已正确认证,因为如果客户端的浏览器无法验证证书,则AJAX请求将无声地失败(而不是在您直接导航到HTTPS页面时提示)!另外,我不知道你的情况会如何,但每当我使用HTTPS时,我通常都需要调整一些东西以使它们正常运行。

长话短说,我从HTTP开始,然后评估HTTPS的需求。祝好运!