前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin'

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin'

作者头像
johnhuster的分享
发布2022-03-29 14:01:28
7.9K0
发布2022-03-29 14:01:28
举报
文章被收录于专栏:johnhuster

在使用ajax向tomcat部署的rest服务(使用nginx作为反向代理服务器)请求数据时返回了Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource这个异常,错误码是504(网关超时

一直在想是什么原因导致了这个异常,也试图搜索了是不是tomcat或者nginx返回的“Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource”文字,仔细看了网络报文后发现这些异常信息是chrome浏览器自己解析出来的:

问题产生的根源在于tomcat上rest服务异常导致没有返回任何数据给nginx代理服务器,而nginx超时后就会返回504这个错误给chrome浏览器。

可以很容易重现这个问题:直接把tomcat服务器关闭,nginx代理服务器向连接服务器超时后就会返回504错误,nginx默认的连接超时时间为60s,这里可以通过设置proxy_connect_timeout参数来设置nginx连接tomcat服务器超时时间。

更多关于nginx作为反向代理时的超时设置参数还有下面几个:

proxy_read_timeout(连接成功后_等候后端服务器响应时间)、proxy_send_timeout(后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据)

收获:web请求失败不能只看描述性文字,要特别关注返回的http错误码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/12/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档