大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 AJAX跨域請求(CORS實現(xiàn))

AJAX跨域請求(CORS實現(xiàn))

更新時間:2021-08-31 09:43:30 來源:動力節(jié)點 瀏覽2572次

場景:目前有項目A(基于servlet的WEB項目),和項目B(基于spring boot的WEB項目),使用同一CAS提供單點登錄,現(xiàn)在需要兩個項目互相調(diào)用接口數(shù)據(jù),所以涉及到ajax的跨域請求

調(diào)研:經(jīng)過調(diào)研發(fā)現(xiàn)目前的ajax跨域解決方案有兩種,jsonp和cors,其中jsonp需要在返回值中攜帶回調(diào)函數(shù),cors則需要在響應(yīng)頭中附加指定參數(shù)。比對實現(xiàn)方式和優(yōu)劣點,決定使用cors來實現(xiàn)

CORS原理:服務(wù)器在收到請求之后,在響應(yīng)參數(shù)中加入,Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-Control-Max-Age,Access-Control-Allow-Headers,Access-Control-Allow-Credentials等參數(shù),瀏覽器在接收到返回值后會通過這些參數(shù)的設(shè)置來判斷服務(wù)器是否支持跨域請求。所以,使用cors的方法就是通過設(shè)置過濾器,在指定請求的響應(yīng)頭中添加參數(shù)即可,傳統(tǒng)的WEB項目,需要在web.xml中設(shè)置,而spring boot項目可以通過注解來設(shè)置

1.servlet的WEB項目實現(xiàn)CORS

服務(wù)器端新建過濾器類

package com.tas.util; 
import java.io.IOException; 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
/**
 * 跨域支持
 */ 
public class SimpleCORSFilter implements Filter { 
	@Override
	public void destroy() {
		// TODO Auto-generated method stub 
	} 
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		HttpServletResponse httpServletResponse = (HttpServletResponse) response;
		httpServletResponse.setHeader("Access-Control-Allow-Origin", "http://localhost");
		httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
		httpServletResponse.setHeader("Access-Control-Max-Age", "3600");
		httpServletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with");
		// 是否支持cookie跨域
		httpServletResponse.addHeader("Access-Control-Allow-Credentials", "true");
        chain.doFilter(request, response);
	} 
	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub 
	} 
}

在web.xml中配置過濾器,注意過濾器要配置在sevrlet和cas的過濾器之前

<filter>
        <filter-name>Simple CORSFilter</filter-name>
        <filter-class>com.tas.util.SimpleCORSFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>Simple CORSFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

這樣的配置就完成了,需要注意的是,在需要跨域訪問該項目的網(wǎng)頁中,如果需要傳遞cookie,則要在ajax中打開withCredentials,如下

    $.ajax({
            url:"http://localhost:8080/tasociety/IndexController.crossdomainTest.do",
            type: "get",
            dataType:"json",
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true,
            success:function (data) {
            	 alert("12345");
                 console.log(data);              
            }
        })

2.spring boot 的WEB項目實現(xiàn)CORS

因為有默認的注解@CrossOrigin,所以直接配置在controller上就好了

package com.castmember.Controller;
@CrossOrigin(origins = "http://localhost:8080",allowCredentials = "true")
@Controller
public class IndexController { 
	 @Autowired
	SysUserDao sysuserdao; 
	@RequestMapping("/")
    public String index(Model model) { 
		Optional<SysUser> useropt= sysuserdao.findById((long)1);
		model.addAttribute("user", useropt.orElse(null));
        return "index";
    }
}

在需要跨域訪問該項目的網(wǎng)頁中,如果需要傳遞cookie,則要在ajax中打開withCredentials,如下

   $.ajax({
            url:"http://localhost/castmember/crossdomaindata",
            type: "get",
            dataType:"json",
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true,
            success:function (data) {
            	 alert("12345");
                 console.log(data);               
            }
        })

以上就是動力節(jié)點小編介紹的"AJAX跨域請求(CORS實現(xiàn))",希望對大家有幫助,想了解更多可查看AJAX教程。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 永久福利视频 | 中文字幕在线观看第二页 | 亚洲国产成人在线 | 欧美成人亚洲欧美成人 | 亚洲精品高清国产一线久久97 | 99re热视频这里只有精品5 | 婷婷在线观看视频 | 国产免费人视频在线观看免费 | 免费福利小视频 | 能在线观看的一区二区三区 | 999福利视频 | 亚洲乱亚洲乱妇无码 | 久久亚洲综合网 | 成人爽a毛片在线视频网站 成人爽视频 | 天天操夜夜操视频 | 年级的后妈妈2中文翻译 | 四虎影视库国产精品一区 | 日韩欧美国产高清在线观看 | 伊人365影院| 久久精品国产精品国产精品污 | 日韩精品一区二区三区毛片 | 久久久精品国产免费观看同学 | www精品久久 | 亚洲 欧美 另类中文字幕 | 国产精品久久在线观看 | 日韩美女一级毛片 | 久久大香香蕉国产免费网站 | 国产一区二区三区在线 | 国产亚洲精品sese在线播放 | 国产伦理久久精品久久久久 | 欧美一级艳片视频免费观看 | 9999热| 久久这里只有精品久久 | 久久久久久久国产精品影院 | 免费四虎永久在线精品 | 奇米网狠狠网 | 国产成人在线视频 | 日韩毛片在线 | 日本伦理中文字幕 | 欧美特级大片 | 国产精品麻豆久久久 |