使用CORS的正则表达式

时间:2013-08-26 07:59:14

标签: regex apache cors

我正在尝试使用带有cors的正则表达式。我已多次读过,这不可能是所有(*)或确切的域名。 Access-Control-Allow-Origin wildcard subdomains, ports and protocols。然而,这似乎与http://www.cameronstokes.com/2010/12/26/cross-origin-resource-sharing-and-apache-httpd/相矛盾:有人可以澄清一下,如果使用正则表达式可以提供一个简单的例子,因为我试图实现上面的链接,但没有成功。

正则表达式希望使用

    ^http\://\blocal-.*\b\.testing-test:10005$

我检查了我的正则表达式,它与生成的网址相匹配。 我已经按照建议添加了SetEnvIF和Header设置行到我的apache2.conf(这是正确的吗?),如下所示

    SetEnvIf Origin "^http\://\blocal-.*\b\.mycompany-it:10005$" 

    AccessControlAllowOrigin=$0 Header add Access-Control-Allow-Origin %

    {AccessControlAllowOrigin}e env=AccessControlAllowOrigin

我迷失了下一步该做什么。它不起作用 提前致谢

1 个答案:

答案 0 :(得分:-1)

Access-Control-Allow-Origin标头只能是通配符'*'或精确网址。一种方法是首先从请求中获取Origin头的值(这在服务器之间有所不同,但是一个样本可能看起来像:request.headers['Origin'])。

然后使用请求Origin的值进行正则表达式检查。如果请求的来源通过了允许的正则表达式表达式的检查,那么您只需将Access-Control-Allow-Origin的值设置为请求的Origin的值(样本:response.headers['Access-Control-Allow-Origin'] = request.headers['Origin'])。通过这种方式,您不会违反访问控制规则作为严格的URL,但也允许服务器接受多个不同的允许来源。