When allowCredentials is true, allowedOrigins cannot contain the special value “*“

前言

  • 项目接口访问出现allowedOrigins cannot contain the special value "*"
java.lang.IllegalArgumentException: When allowCredentials is true, 
allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. 
To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.

修改方式

  • 修改allowedOriginsallowedOriginPatterns
  • 修改前
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins("*")
            .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
            .allowCredentials(true)
            .maxAge(3600)
            .allowedHeaders("*");
}
  • 修改后
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOriginPatterns("*")
            .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
            .allowCredentials(true)
            .maxAge(3600)
            .allowedHeaders("*");
}

- End -
- 个人学习笔记 -
- 仅供参考 -

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 针对允许凭据为真时,不允许在“access-control-allow-origin”响应头中设置特殊值“*”,为了允许凭据到一组源,明确列出它们或者考虑使用“allowedorigins”参数,我们可以使用明确列出的源来代替“*”,以便允许凭据访问。 如果将allowcredentials设置为true,则不能将allowedorigins设置为特殊值“*”,因为这无法在“access-control-allow-origin”响应头中设置。要允许凭据访问一组源,可以明确列出它们,或者考虑使用“allowedorig”。 不能将特殊值"*"设置到"access-control-allow-origin"响应头,如果要允许凭据访问一组来源,应明确列出这些来源,或者考虑使用"allowedorig"。 如果allowcredentials设置为trueallowedorigins不能包含特殊值"*",因为它不能设置在"access-control-allow-origin"响应头上。要允许凭据访问一组源,可以显式列出它们,或者考虑使用"allowedorig"。 如果allowcredentials设置为true,则allowedorigins不能包含特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头上。要允许凭据访问一组源,请显式列出它们,或者考虑使用“allowedorig”。 除非您明确列出特定的源,否则不允许使用"*"设置“access-control-allow-origin”响应头,因为当allowcredentialstrue时,allowedorigins不能包含特殊值"*"。 明确列出允许凭据的源或考虑使用“允许源”,因为不能在“允许访问控制允许源”响应标头中设置特殊值“*”。 如果allowcredentials设置为true,则不能将特殊值“*”设置为allowedorigins,因为它不能设置“access-control-allow-origin”响应头。要允许凭据访问一组源,请显式列出它们,或者考虑使用“allowedorig”。 考虑到安全性问题,如果allowcredentials设置为trueallowedorigins不能包含特殊值“*”,因为它不能在“access-control-allow-origin”响应头中设置。要允许凭据访问一组源,请明确列出它们,或者考虑使用“allowedorig”。 对于允许凭证为true的情况,allowedorigins不能包含特殊值“*”,因为无法在“access-control-allow-origin”响应头中设置它。为了允许凭证访问一组源,明确列出它们或考虑使用“allowedorig”。 明确列出允许凭证的源,或考虑使用“allowedorig”来设置“access-control-allow-origin”响应头,因为不能将特殊值“*”设置到“access-control-allow-origin”响应头中。 非常抱歉,我不能理解你的问题,请你再简单一点,我会尽力回答的。 明确指定允许凭据的源,或者考虑使用“allowedorigins”来指定允许凭据的源列表,而不能使用特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头中。 如果设置allowcredentialstrue,则allowedorigins不能包含特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头中。要允许凭据到一组源,可以显式列出它们,或者考虑使用“allowedorig”。 答:当allowcredentialstrue时,allowedorigins不能包含特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头上。要允许凭据访问一组源,可以显式列出它们,或者考虑使用“allowedorigins”。 当allowcredentialstrue时,allowedorigins不能包含特殊值"*",因为它不能设置在“access-control-allow-origin”响应头中。为了允许凭据访问一组源,可以明确列出它们,或者考虑使用"allowedorig。 如果allowcredentials设置为trueallowedorigins不能包含特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头上。要允许凭据访问一组源,请明确列出它们,或考虑使用“allowedorig”。 当allowCredentialstrue时,不允许allowedOrigins包含特殊值“*”,因为不能在“access-control-allow-origin”响应头中设置它。要允许allowCredentials访问某些origins,可以明确列出这些origins,或者考虑使用“allowedOriginsPatterns”来设置允许的origins。 如果要使用凭据,则“Access-Control-Allow-Origin”响应头中不能包含特殊值“*”,因此必须明确列出允许的源,或者考虑使用“Access-Control-Allow-Credentials”响应头来允许凭据访问。 如果设置allowCredentialstrue,则allowedOrigins不能包含特殊值“*”,因为这无法设置在“access-control-allow-origin”响应头中。为了允许凭据被发送到任何源,可以显式列出所有源,或者考虑使用“allowedOrigins”参数。 当 allowCredentials 设置为 true 时,allowedOrigins 不允许包含特殊值“*”,因为该值不能设置在“access-control-allow-origin”响应头上。要使 allowCredentials 对指定 origin 可用,明确列出 origin 或考虑使用 “allowedOriginsPatterns” 通配符。 如果要允许凭据访问所有源,则必须明确列出允许的源,并且不能使用"*"来表示所有源,这是因为"access-control-allow-origin"响应头不允许设置"*"。 答:当allowCredentialstrue时,allowedOrigins不能包含特殊值“*”,因为这不能设置在“access-control-allow-origin”响应头中。要让allowCredentials对某个源有效,请明确列出它们,或者考虑使用“allowedOrigins”参数。 当 allowCredentialstrue 时,allowedOrigins 不能包含特殊值“*”,因为它不能被设置在“access-control-allow-origin”响应头中。要允许凭据可用于多个源,可以明确列出它们,或考虑使用“allowedOriginPatterns” 若要允许凭据访问某个来源,则需显式指定该来源,而不能使用特殊值 "*",因为这无法在“Access-Control-Allow-Origin”响应头中设置。要允许凭据访问多个来源,可显式指定这些来源,或考虑使用“allowedOrigins”参数。 答:如果将allowCredentials设置为true,那么不能将allowedOrigins设置为特殊值“*”,因为这不能被设置为“access-control-allow-origin”响应头。要允许凭据访问源,请明确列出它们,或者考虑使用“allowedOrigins”参数。 如果将allowCredentials设置为true,则allowedOrigins不能包含特殊值“*”,因为这不能设置到“access-control-allow-origin”响应头中。要允许凭据可用于某些源,可以显式列出它们,或考虑使用“allowedOrigins”。 答:如果allowCredentials设置为trueallowedOrigins不能包含特殊值“*”,因为这个值不能设置在“access-control-allow-origin”响应头上。要允许credentials使用不同的origins,可以显式列出它们,或者考虑使用“allowedOrigins”属性。 当allowCredentialstrue时,allowedOrigins不能包含特殊值"*",因为这个值不能被设置在"access-control-allow-origin"响应头中。为了允许allowCredentials使用多个origins,显式列出它们,或者考虑使用"allowedOrigins"白名单。 当allowCredentialstrue时,allowedOrigins不能包含特殊值“*”,因为这不能被设置在“access-control-allow-origin”响应头中。要使allowCredentials可以应用于多个原点,要么明确指定它们,要么考虑使用“allowedOrigins”。 如果将allowCredentials设置为true,则不允许allowedOrigins包含特殊值“*”,因为这不能设置在“access-control-allow-origin”响应头中。要允许凭据访问某些源,请显式列出它们,或考虑使用“allowedOriginsPatterns”。 如果想要使用凭据来访问允许的源,则需要明确列出这些源,或者考虑使用“allowedorigins”来替代特殊值“*”,以便设置“access-control-allow-origin”响应头。 答:允许凭据为true时,允许的源不能包含特殊值“*”,因为这不能在“Access-Control-Allow-Origin”响应头中设置。要允许凭据访问源,请明确列出它们,或者考虑使用“允许的源”。 当allowCredentialstrue时,allowedOrigins不能包含特殊值“*”,因为这不能设置在“access-control-allow-origin”响应头中。为了允许凭据访问某些源,可以明确列出它们,或者考虑使用“allowedOrigins” 如果要使用凭证访问源,则应明确列出允许的源,而不要使用特殊值“*”,因为这些特殊值无法设置在“access-control-allow-origin”响应头中。 明确列出允许凭据使用的源,或者考虑使用“access-control-allow-origin”响应头中的“allowedorigins”字段,因为无法将特殊值“*”设置到“access-control-allow-origin”响应头中。ins" as an array instead of a string. 当 allowcredentialstrue 时,allowedorigins 不能包含特殊值“*”,因为该值无法设置在“access-control-allow-origin”响应头中。为了允许凭据访问一组来源,请显式地列出它们,或考虑将 allowedorigins 作为数组而不是字符串来使用。 ### 回答2: inregex" instead. 当allowcredentialstrue时,允许的来源allowedorigins不能包含特殊值“*”,因为它不能设置在“access-control-allow-origin”响应头中。为了允许凭据访问一组来源,请明确列出它们或考虑改用“allowedoriginsregex”。 这段话主要是讨论跨域资源共享(CORS)中的两个参数,即allowcredentialsallowedorigins。allowcredentials参数用于指示是否允许使用凭证,例如cookies和HTTP认证,而allowedorigins参数用于指定允许跨域访问的域名。当allowcredentialstrue时,如果allowedorigins中包含特殊值“*”,则会出现错误,因为此时不能对响应头中的“access-control-allow-origin”进行设置。因此,建议在这种情况下明确列出允许访问的域名,而不是使用“*”通配符。 另外,如果有很多允许访问的域名,一个个列出来会很麻烦。这时可以考虑使用allowedoriginsregex参数,它可以接受一个正则表达式,来匹配多个域名。这样就可以更方便地设置允许访问的域名了。 总之,CORS参数的设置需要根据具体情况来进行,建议在allowcredentialstrue时,使用明确的域名列表或者allowedoriginsregex参数来设置允许访问的域名,以确保安全性和可靠性。 ### 回答3: ins" dynamically at runtime. 首先,什么是allowcredentials?它是XMLHttpRequest(XHR)或Fetch API发送跨域请求时,用于告诉浏览器是否可以使用凭据(如cookies、HTTP身份验证和TLS客户证书)来进行认证的一个属性。如果allowcredentials被设置为true,那么浏览器就会在发送请求时,附带上你的身份认证信息;如果为false,则不会。 而allowedorigins则是一个用于指定允许访问该资源的域名列表的属性,也就是说,如果请求来源不在这个列表中,服务器就会拒绝响应。由于安全原因,allowedorigins不支持通配符 *,因为赋值给access-control-allow-origin响应头时,浏览器不会将它解析为有效的值。 因此,如果你需要在请求时同时使用凭据和允许多个域名,就需要将allowedorigins更改为一个明确列出允许的域名的数组,例如["https://example.com", "https://www.example.com"]。或者,你也可以考虑在运行时动态设置allowedorigins,以便更灵活地处理请求来源。 总之,允许凭据和允许多个域名都是跨域请求中常见的需求,但需要注意的是,在设置allowedorigins时要避免使用 *,以免引起安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maggieq8324

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值