利用Filter解决跨域请求的问题

1、为什么出现跨域。

很简单的一句解释,A系统中使用ajax调用B系统中的接口,此时就是一个典型的跨域问题,此时浏览器会出现以下错误信息,此处使用的是chrome浏览器。

错误信息如下:


jquery-1.8.0.min.js:3 Failed to load http://localhost:8081/authz/openapi/v1/token: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.

Origin ‘null‘ is therefore not allowed access.

这就是跨域后浏览器报错,当然导致跨域问题的一些细节想要了解可以自行百度,此处只是介绍如何进行解决。

2、利用Filter解决跨域问题。

(1)首先新建一个filter,代码完全可以copy。


package com.leimingtech.web.context;

import javax.servlet.*;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class CrossDomainFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

HttpServletResponse httpServletResponse=(HttpServletResponse)servletResponse;

httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");

httpServletResponse.setHeader("Access-Control-Allow-Headers", "Authentication");

filterChain.doFilter(servletRequest,httpServletResponse);

}

@Override

public void destroy() {

}

}

(2)修改web.xml配置文件,将filter配置进去。


<!-- 跨域请求filter -->

<filter>

<filter-name>crossDomainFilter</filter-name>

<filter-class>com.leimingtech.web.context.CrossDomainFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>crossDomainFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

(3)ok重启应用跨域问题成功解决。

原文地址:https://www.cnblogs.com/liwenlongBlog/p/9430205.html

时间: 2024-10-07 16:33:54

利用Filter解决跨域请求的问题的相关文章

利用jsonp实现跨域请求

同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略.所谓同源是指,域名,协议,端口相同.当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行.如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问. 由于同源策略,我们在使用ajax请求资源时不能跨域请求,也就是说必须是同一个域名,协议,端口.

js中ajax如何解决跨域请求

js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操作. 跨域指的协议.域名.端口 有一个不同的情况下都是跨域 例:在本站点请求外站的数据是不允许的 //在本站点请求外站点的资源是不允许的 $(function () { $.ajax({ url: "http://127.0.0.1:14847/Web/jsonp.js", success

Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

    webservice 代码 1 /// <summary> 2 /// MESService 的摘要说明 3 /// </summary> 4 [WebService(Namespace = "http://tempuri.org/")] 5 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 6 //[System.ComponentModel.ToolboxItem(false)

SpringBoot解决跨域请求拦截

前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口. 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策. 比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截. 注意两点: 1.必须是脚本请求,比如AJAX请求. 但是如下情况不会产生跨域拦截 <img src="xxx"/> <a href='xxx"> </a&

服务端Filter解决跨域方法

问题一.浏览器是先执行请求还是先判断跨域? 浏览器请求-->判断响应中是否有允许跨域-->发现不允许跨域,阻止跨域 说明:当执行跨域请求时,浏览器会提示当前接口不被允许,这说明浏览器已发出了当前请求,但是它的的响应内容被拦截:如果在Response header中的Access-Control-Allow-Origin设置的允许访问源不包含当前源,则拒绝数据返回给当前源. 问题二.判断当前请求是否是跨域请求? 通过查看当前请求的Request Headers 中是否存在Origin属性,当前属

利用CORS实现跨域请求(转载)

跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题.不过现在,我们可以考虑一下W3C中一项新的特性--CORS(Cross-Origin Resource Sharing)了. 本文的所有代码均来自http://www.html5rocks.com/en/tutorials/cors/,如果您对其中的任何技术细节存在疑问,请以原文为准. 客户端 创建XmlHttpRequest对象 对于CORS,Chrome.FireFox以及Safari,需要使用Xml

[转] 利用CORS实现跨域请求

[From] http://newhtml.net/using-cors/ 跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题.不过现在,我们可以考虑一下W3C中一项新的特性--CORS(Cross-Origin Resource Sharing)了. 本文的所有代码均来自http://www.html5rocks.com/en/tutorials/cors/,如果您对其中的任何技术细节存在疑问,请以原文为准. 客户端 创建XmlHttpRequest对象

JavaWeb项目解决跨域请求配置

首先需要一个filter,代码如下: package com.ckugua.mentality.filter; import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException; public class SimpleCORSFilter implements Filter { pr

$.ajax和$.getJson解决跨域请求

写js时总是会遇到跨域请求的问题,现在了解了两种方法,记录之: 1)使用$.ajax,但是返回数据类型要设置为jsonp,示例: $.ajax({ type: 'get', contentType: "application/json; charset=utf-8", url: "http://localhost:8080/aqi/getCityList.php", dataType: 'jsonp', headers: { Accept: "applic