前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >已解决:No 'Access-Control-Allow-Origin' header is present on the requested resource'(跨域问题)

已解决:No 'Access-Control-Allow-Origin' header is present on the requested resource'(跨域问题)

作者头像
陈哈哈
发布2020-07-06 10:49:45
2.3K0
发布2020-07-06 10:49:45
举报
文章被收录于专栏:MySQL入坑记MySQL入坑记

问题分析:

这是常见的跨域请求问题,在前后端分离的项目中常见,前端项目中的请求路径直接用后台请求路径(例如:http://192.168.1.1:8080/demo/getUser.do),但根据浏览器的网络请求规则,后台Server是不允许这样直接调用的(会被当黑客恶意攻击给拦截掉)。从而导致该跨域请求被拒绝(如下图)。

Access to XMLHttpRequest at 'http://192.168.1.1:8080/app/easypoi/importExcelFile' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方式:

网上很多让修改各种项目中的配置文件但是不好使。其实:只需修改后台Server(如java的tomcat)的一个过滤配置即可,即允许跨域请求;

在请求的server端(tomcat)的conf/web.xml 配置文件中加入如下配置过滤器

(如web.xml中有多个filter时要把下面配置放在最前端)

代码语言:javascript
复制
<filter>
 <filter-name>CorsFilter</filter-name>
 <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
 <init-param>
   <param-name>cors.allowed.methods</param-name>
   <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
 </init-param>
 <init-param>
   <param-name>cors.allowed.headers</param-name>
   <param-value>Access-Control-Allow-Origin,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
 </init-param>
 <async-supported>true</async-supported>
</filter>
<filter-mapping>
 <filter-name>CorsFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

这样在根源(后台)上允许了跨域请求,同时也存在被黑客恶意注入导致服务器瘫痪(内网或单机版除外)。

以上就是解决跨域请求最简单的方式。希望大家别走弯路~

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

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

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

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

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