【请求报错】Allowing credentials for wildcard origins is insecure. Please specify more restrictive origins or set ‘credentials’ to false in your CORS configuration.。
在使用vue+axios时请求接口时遇到报错:Allowing credentials for wildcard origins is insecure. Please specify more restrictive origins or set ‘credentials’ to false in your CORS configuration。
使用postman调用该接口并未出现错误
查看vue.config.js中devServer无误后,确认问题不是来自前端
比较正常接口(下图左)和异常接口(下图右)发现response Headers有关于跨域请求的部分配置不一样
解决方案:后端开发在接口的response Headers中设置跨域
'corsFilter' => [ 'class' => Cors::class, 'cors' => [ 'Origin'=> ['//localhost:8080'], 'Access-Control-Request-Method' => ['*'], 'Access-Control-Request-Headers' => ['*'], 'Access-Control-Allow-Credentials' => true, 'Access-Control-Max-Age' => 3600, 'Access-Control-Expose-Headers' => ['Content-Type, Content-Length, Authorization, Accept, X-Requested-With'], ] ]
上边配置的解释
Origin
即Access-Control-Allow-Origin
表示 响应头指定了该响应的资源是否被允许与给定的origin共享。Access-Control-Request-Method
用于通知服务器在真正的请求中会采用哪种 HTTP 方法。因为预检请求所使用的方法总是 OPTIONS ,与实际请求所使用的方法不一样,所以这个请求头是必要的。Access-Control-Request-Headers
用于通知服务器在真正的请求中会采用哪些请求头。Access-Control-Allow-Credentials
表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以。Access-Control-Max-Age
表示返回结果(即Access-Control-Allow-Methods
和Access-Control-Allow-Headers
提供的信息) 可以被缓存多久。Access-Control-Expose-Headers
列出了哪些首部可以作为响应的一部分暴露给外部。
注意
如果设置 Origin
为 ['*']
,即所有的前端跨域请求可以接受,同时把 Access-Control-Allow-Credentials
设置为 true
,Yii 会直接报错:Allowing credentials for wildcard origins is insecure. Please specify more restrictive origins or set ‘credentials’ to false in your CORS configuration.。
告诉你使用通配符的凭证是不安全的,让你设置更严格的 Origin
或者把 Access-Control-Allow-Credentials
设置为 false
。