由于业务需要,要在headers中添加aesKey字段,结果出现了跨域错误:
Request header field aeskey is not allowed by Access-Control-Allow-Headers in preflight response.
但我的跨域中间件也都是正常的,于是尝试把*改成具体的字段就正常了。
'Access-Control-Allow-Headers' => '*', // 报跨域错误!
'Access-Control-Allow-Headers' => 'Content-Type,aesKey', // 正常
难道Access-Control-Allow-Headers 不支持*号吗?
请大佬指点迷津。
网上搜下 “
Access-Control-Allow-Headers: *
跨域不生效”就知道了,并不是所有浏览器都支持Access-Control-Allow-Headers: *
,需要将Access-Control-Allow-Headers
设置为具体值。这个属于浏览器兼容问题。可以从请求头里面拿到,原样返回就行。
以下是tp5的写法,仅供参考,不要直接复制粘贴,要改成webman写法。
关键点:
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");