Swagger UI用IP地址出现schemaValidationMessages错误的原因
问题原因解析
这个现象的核心原因主要分为以下几点:
浏览器同源策略的特殊豁免差异
浏览器对localhost存在同源策略的特殊豁免,当使用localhost作为请求地址时,浏览器不会严格执行跨域资源共享(CORS)校验;但切换为IP地址后,这个豁免不再生效。Swagger UI内置的Schema校验器需要请求http://10.100.160.420:9001/api/docs/swagger.json来验证API文档的合法性,此时该请求被判定为跨域请求,若后端服务器未配置允许该IP来源的CORS规则,请求就会被拦截,导致校验器无法读取文件,进而抛出错误。Swagger UI内置校验的源验证问题
Swagger UI默认启用的Schema校验功能,会基于你配置的url地址去拉取对应的swagger.json文件。当使用IP地址时,校验器发起的请求无法通过服务器的源验证;而localhost作为本地域名,服务器通常默认允许这类请求,因此不会触发错误。后端服务的绑定地址限制
还有一种可能是你的后端服务仅绑定了localhost(即仅监听127.0.0.1地址),并未绑定外部IP10.100.160.420。这种情况下,通过IP地址访问时,后端服务无法响应swagger.json的请求,直接导致Swagger UI的校验器提示“无法读取文件”的错误。
内容的提问来源于stack exchange,提问作者UDIT SONI
相关产品推荐
相关产品推荐

