假设您有一个主要由来自其他来源的浏览器使用的API。 每个客户在API上都有自己的子域名,所以.api.service.com
该服务允许客户定义应允许哪些来源执行CORS请求。 当具有允许来源的浏览器执行请求时,服务器将响应预期的Access-Control-Allow-Origin标头设置为与Origin请求标头相同的值。
当浏览器从不允许的来源执行请求时,处理此问题的常用方法是使用403响应请求而不指定Access-Control-Allow-Origin标头,这将导致浏览器触发请求上的错误。但是,浏览器不会公开错误是由丢失的CORS标头引起的任何信息(尽管它通常会在控制台中记录一个有用的错误)。
这使得很难以编程方式显示一个有用的“这个来源是不允许的,请配置。” - 消息,因为似乎没有一个好方法可靠地判断错误是否是由wifi故障引起的,网络错误或无效/缺少CORS配置。
我的问题是;当服务器检测到不应该被允许的源,而不是没有响应没有CORS头时,它是否可以用403响应并包含CORS头以允许浏览器读取错误?
由于每个请求都在API上执行此过程,我认为这应该是安全的,但我可能会忽视某些事情。想法?