TongWeb跨域问题- No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

TongWeb跨域问题

在进行国产化适配的过程中,出现了Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

解决方案

1.尝试使用反向代理和前后端COR配置,均无效

2.Get请求可以,而Options请求被拒绝

3.发现运维配置过程中,禁用了options方法.
在这里插入图片描述

### TongWeb 中解决问题的方法 #### 配置CORS响应头 为了使TongWeb能够正确处理来自不同源的HTTP请求,可以在服务器端设置相应的CORS(Cross-Origin Resource Sharing)响应头。具体来说,在返回给客户端的数据包中加入`Access-Control-Allow-Origin`字段来指定允许访问该资源的外部名[^2]。 对于某些特定场景下遇到预检请求失败的情况——即OPTIONS方法被阻止的问题,这通常是因为服务器默认关闭了对该种类型的处理或是过滤掉了此类请求。此时除了要确保上述提到的基础配置外,还需要特别注意开启并支持 OPTIONS 请求的通过[^3]。 #### 修改应用层面实现全局拦截器或过滤器 如果是在Java Web项目里运行的应用程序,则可以通过创建自定义filter的方式来进行更灵活细致的操作。编写一个实现了javax.servlet.Filter接口的新类,并重写doFilter()函数内部逻辑以添加必要的头部信息到每一个出去的消息体上[^4]。 ```java import javax.servlet.*; import java.io.IOException; public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException {} @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", "*"); // 或者只允许特定网站调用API服务 //response.setHeader("Access-Control-Allow-Origin","https://example.com"); // 支持多种请求方式 response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS"); // 允许携带认证凭证(cookie等) response.setHeader("Access-Control-Allow-Credentials", "true"); // 指定可选中的额外HTTP首部名称列表 response.setHeader("Access-Control-Allow-Headers", "Content-Type,XFILENAME,XFILECATEGORY,XFILESIZE"); if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { response.setStatus(HttpServletResponse.SC_OK); } else { chain.doFilter(req, res); } } @Override public void destroy() {} } ``` 最后一步就是将此过滤器注册至web.xml文件之中: ```xml <filter> <filter-name>cors</filter-name> <filter-class>com.example.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 以上措施应该能有效缓解大部分由同源策略引发的兼容性难题。当然实际操作时还需依据具体情况调整参数设定以及排查其他潜在因素的影响[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值