Php 如何使用通配符来允许特定的域COR?

Php 如何使用通配符来允许特定的域COR?,php,symfony,cors,Php,Symfony,Cors,我想允许以allow_origin的身份访问指定域,如下所示 allow_origin: 'http://*.fixed-name.com' 这里fixed-name.com是固定域,但域的初始部分可以是任何内容,因此我需要允许CORS在末尾包含任何内容(fixed-name.com) 所以我试着这样做 allow_origin: 'http://*.fixed-name.com' 并且尝试使用此URL访问它,假设抛出CORS错误仍然存在。您不能。CORS通配符要么全有,要么全无 相反,根

我想允许以
allow_origin
的身份访问指定域,如下所示

allow_origin: 'http://*.fixed-name.com'

这里fixed-name.com是固定域,但域的初始部分可以是任何内容,因此我需要允许CORS在末尾包含任何内容(fixed-name.com)

所以我试着这样做

allow_origin: 'http://*.fixed-name.com'

并且尝试使用此URL访问它,假设抛出CORS错误仍然存在。

您不能。CORS通配符要么全有,要么全无


相反,根据您的模式(例如,使用正则表达式)测试
Origin
请求标头,然后在
访问控制允许Origin
响应标头中回显该值(如果匹配)。

您不能。CORS通配符要么全有,要么全无

相反,根据您的模式(例如,使用正则表达式)测试
Origin
请求标头,然后在
Access Control Allow Origin
响应标头中回显该值(如果匹配)。

因为您标记了该值

您可以直接使用

只需安装软件包(
composer req cors
),然后在您的配置中:

nelmio_cors:
允许源代码:['^https?:/.+\.fixed name.com$']
这将为来自
fixed name.com
子域的任何请求发出特定的CORS头,但不会为任何其他请求发出CORS头

您可以有一个可能起源的数组,数组中的每个元素都可以是正则表达式,因此这将给您足够的灵活性来处理任何场景(另外,您可以使用环境变量轻松地为prod和dev提供不同的配置)。

因为您标记了它

您可以直接使用

只需安装软件包(
composer req cors
),然后在您的配置中:

nelmio_cors:
允许源代码:['^https?:/.+\.fixed name.com$']
这将为来自
fixed name.com
子域的任何请求发出特定的CORS头,但不会为任何其他请求发出CORS头


您可以有一个可能起源的数组,数组中的每个元素都可以是正则表达式,因此这将给您足够的灵活性来处理任何场景(另外,您可以使用环境变量轻松地为prod和dev进行不同的配置).

nelmio\u cors:默认值:允许\u凭据:错误允许\u来源:[]允许\u标头:[]允许\u方法:[]公开\u标头:[]最大时间:0主机:[]来源\u正则表达式:错误强制\u允许\u来源\u值:~路径:'^/api]:允许\u凭据:正确允许\u来源:['^http?:/.+\.sam.code.com$']允许\u头:['*']因此,我试图使用访问api,但获取CORS issueYour regex似乎是错误的。如果您使用
demo-sam.code
作为域,并且变量部分应该是
demo-
,那么合适的regex应该是:
+sam.code.com
。您添加了一个句点(
/code>)就像我的例子一样,但只有在你使用子域的情况下才会出现这种情况。现在只需要你获得合适的正则表达式。这个包可以工作,被成千上万的用户使用。具体或不具体取决于你想要的。如果你的域模式太不规则,你最终会匹配很多你不感兴趣的东西。例如,与ab你可以匹配
demo-sam.code.com
,但是你也可以匹配
anythingelsam.code.com
。如果它总是用破折号(
-
)分隔,那么在你的正则表达式中使用它:
'^https?:/。+-sam.codecom$'
nelmio\u cors:默认值:允许凭证:false允许来源:[]允许头:[]allow_methods:[]expose_Header:[]最大年龄:0主机:[]源代码正则表达式:false forced_allow_源代码值:~路径:'^/api':allow_凭据:true allow_源代码:['^http?://.+\.sam.code.com$']allow_Header:['*']因此,我试图使用访问api,但获取CORS issueYour regex似乎是错误的。如果您使用
demo-sam.code
作为域,并且变量部分应该是
demo-
,那么合适的regex应该是:
+sam.code.com
。您添加了一个句点(
/code>)就像我的例子一样,但只有在你使用子域的情况下才会出现这种情况。现在只需要你获得合适的正则表达式。这个包可以工作,被成千上万的用户使用。具体或不具体取决于你想要的。如果你的域模式太不规则,你最终会匹配很多你不感兴趣的东西。例如,与ab你可以匹配
demo-sam.code.com
,但是你也可以匹配
anythingelsam.code.com
。如果它总是用破折号隔开(
-
),那么在你的正则表达式中使用它:
'^https?:/.+-sam.codecom$'
我试过regexp:allow\u origin:['^http://*.+-sam code.com$]对于origin。但是它不起作用给cors问题这有什么问题?@SunilRawat-我可以想象,你正在读取该值的任何库都不接受正则表达式。谢谢@Quentin,它现在起作用了。我没有为我的resp api包启用reg支持。我尝试了reg exp:allow_origin:['^http?:/*.+-sam.code.com$']用于origin。但它不起作用给cors问题这有什么问题?@SunilRawat-我可以想象,无论你用什么库读取该值,它都不接受正则表达式。谢谢@Quentin,它现在起作用了。我没有为我的resp api包启用reg支持。