问题描述
我正在构建一个通过Nginx服务器与Laravell API进行通信的Web应用程序。我尝试按照Nginx网站上有关wide open cors的指示进行操作,但是发送凭据时它不喜欢通配符响应。
通过CORS策略阻止从来源“ http:// localhost:8080”访问“ https://api.*** .com /”的访问:对预检请求的响应未通过访问控制检查:当请求的凭据模式为“包括”时,响应中“访问控制允许-原始”标头的值不能为通配符“ ”。
API服务器需要一个Bearer访问令牌来进行身份验证,并且每个端点都在服务器上自己的路径上。在这种情况下配置Nginx的正确方法是什么?
解决方法
错误消息是正确的,您不能使用通配符起源和凭据:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
对于没有凭据的请求 ,可以将文字值“
*
”指定为通配符;该值告诉浏览器允许从任何来源请求代码来访问资源。尝试使用凭据为will result in an error的通配符。
相反,只需传回实际来源(到达Origin HTTP标头中的来源),然后它将始终匹配:
add_header Access-Control-Allow-Origin $http_origin always;