2

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

希望使用的正则表达式是

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

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

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

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

    {AccessControlAllowOrigin}e env=AccessControlAllowOrigin

我不知道下一步该怎么做。它不起作用提前谢谢

4

1 回答 1

4

Access-Control-Allow-Origin 标头只能是通配符 '*' 或确切的 url。一种方法是首先从请求中获取 Origin 标头的值(这因服务器而异,但一个示例可能如下所示:)request.headers['Origin']

然后使用请求 Origin 的值进行正则表达式检查。如果请求的来源通过了允许的正则表达式的检查,那么您可以简单地将 Access-Control-Allow-Origin 的值设置为请求的 Origin 的值(示例:)response.headers['Access-Control-Allow-Origin'] = request.headers['Origin']。这样,您不会违反访问控制是严格 url 的规则,而且还允许服务器接受多个不同的允许来源。

于 2017-05-19T13:54:56.533 回答