项目场景:
我的easyScholar插件内置翻译功能。该功能的实现是携带文本发起get请求,调用我在阿里云的服务器接口获得数据。
问题描述:
在谷歌、edge浏览器能正常使用,但是在火狐却不能使用。
原来是被火狐跨域拦截了,在火狐浏览器请求我自己的接口的时候,因为接口并没有设置跨域请求允许,所以浏览器认为不安全,就给拦截了,解决办法如下
解决方案:
新建CorsFilter()过滤器继承 Filter
package com.easyscholar.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest reqs = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
能看的出来,问题已经得到解决