首页 >> 大全

ssm整合篇-配置跨域访问-前后端分离配置跨域

2023-09-13 大全 33 作者:考证青年

域名:域名不同也就意味着ip地址不同。

端口号:port,即使是同一台电脑,每个应用程序都占用不同的端口号。

非同源限制

无法读取非同源网页的 、 和

无法接触非同源网页的 DOM

_跨域是设置前端还是设置后端_配置跨域请求

无法向非同源地址发送 AJAX 请求

跨域解决方案 1. 使用注解@ 直接在类或方法前加上@注解即可允许所有ip跨域访问加在类上表示该的所有方法都支持跨域加在中的方法上表示仅该方法支持跨域

@CrossOrigin // 允许所有ip跨域
@CrossOrigin(origins = "192.168.0.0") // 允许指定ip跨域

2. 在配置文件中配置跨域请求

<mvc:cors><mvc:mapping path="/**" allowed-origins="*"allowed-methods="POST,GET,DELETE,PUT"allowed-headers="Content-Type, Access-Control-Allow-Headers,Authorization,X-Requested-with"allow-credentials="true"/>mvc:cors>

3. 使用cors-包配置跨域

跨域是设置前端还是设置后端_配置跨域请求_

<dependency><groupId>com.thetransactioncompanygroupId><artifactId>cors-filterartifactId><version>2.10version>dependency>

在web.xml注册跨域过滤器

    <filter><filter-name>corsfilter-name><filter-class>com.thetransactioncompany.cors.CORSFilterfilter-class><init-param><param-name>cors.allowOriginparam-name><param-value>*param-value>init-param><init-param><param-name>cors.supportedMethodsparam-name><param-value>GET,POST,PUT,DELETEparam-value>init-param><init-param><param-name>cors.supportedHeadersparam-name><param-value>Content-Type, Access-Control-Allow-Headers,Authorization,X-Requested-withparam-value>init-param><init-param><param-name>cors.exposedHeadersparam-name><param-value>Set-cookieparam-value>init-param><init-param><param-name>cors.supportsCredentialsparam-name><param-value>trueparam-value>init-param>filter><filter-mapping><filter-name>corsfilter-name>
<url-pattern>/*url-pattern>filter-mapping>

4. 当然,也可以手写跨域请求过滤器

@Filter("/*")
public class CrossingFilter implements Filter {private boolean isCross = false;@Overridepublic void destroy() {isCross = false;}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {if (isCross) {HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletResponse httpServletResponse = (HttpServletResponse) response;System.out.println("拦截请求: " + httpServletRequest.getServletPath());httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");// httpServletResponse.setHeader("Access-Control-Allow-Methods", "*"); // 表示所有请求都有效httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");httpServletResponse.setHeader("Access-Control-Max-Age", "0");httpServletResponse.setHeader("Access-Control-Allow-Headers","Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");httpServletResponse.setHeader("XDomainRequestAllowed", "1");}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {String isCrossStr = filterConfig.getInitParameter("IsCross");isCross = isCrossStr.equals("true") ? true : false;System.out.println("跨域开启状态:" + isCrossStr);}
}

跨域请求对基础方案就是这几种。也还有更好的解决方案,但暂时还不了解。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了