跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

api服务器与前端服务器之间如何解决跨域问题?

浏览器请求前端服务器的静态资源,html、css之类的, 然后浏览器再进行ajax请求api服务器,产生了跨域问题。 我目前想的方案, 一是把前后端资源都置于同一域名下,但是感觉不是太合理。 二是使用反向代理,但是没弄过不清楚是不是合适。 立即学习 “ 前端免费学习笔记(深入) ”; 请问如何通过后端解决此问题呢? 回复内容: 浏览器请求前端服务器的静态资源,html、css之类的, 然后浏览器再进行ajax请求api服务器,产生了跨域问题。 我目前想的方案, 一是把前后端资源都置于同一域名下,但是感觉不是太合理。 二是使用反向代理,但是没弄过不清楚是不是合适。 立即学习 “ 前端免费学习笔记(深入) ”; 请问如何通过后端解决此问题呢? 跨域基本上有以下几种解决方案 JSONP CORS window.name document.domain 5.location.hash 6.window.postMessage() 具体可参考以下文章https://github.com/rccoder/bl... PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 api服务器设置跨域头即可,如果你是spring写的,可以用类似如下的代码
@Component public class CorsFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; HttpServletRequest request = (HttpServletRequest) req; response.setHeader("Access-Control-Allow-Origin", "你的前端服务器地址"); response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE, HEAD, PATCH"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, X-Auth-Token, Content-Type"); response.setHeader("Access-Control-Expose-Headers", "X-Requested-With, X-Auth-Token, Content-Type, X-TOTAL-COUNT"); response.setHeader("Access-Control-Allow-Credentials", "true"); if (!"OPTIONS".equalsIgnoreCase(request.getMethod())) { chain.doFilter(req, res); } } @Override public void init(FilterConfig config) throws ServletException { } }
举例,有两个项目:P 以及 API 那么调用方式类似:P前端 -》P后端 -》API 题主后端Nodejs的,可以采用一下代码实现跨域,如果是express,建议包装成middleware
res.setHeader('Access-Control-Allow-Origin', req.headers.origin); res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); res.setHeader('Access-Control-Allow-Headers','x-requested-with,content-type');
最佳答案已经有了,别忘了请求的时候 withCredentials: true 以带上 cookie jsonp 可以参考下 Access-Control-Allow-Origin:前端域名 个人觉得还是利用反向代理最靠谱 可能使用nginx进行反向代理比较方便,设置跨域响应头并不能全部兼容IE 反向代理比较简单 node 写的后台代码采用express/koa的话直接在后端代码里引入cors()中间件即可 用nginx做反向代理比较方便呢 随便在API服务器上放个js文件,前端引用一下,之后是不是就没有跨域问题了,就像调用外部统计那种逻辑。

相关文章