成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java后端服務(wù)的跨域處理-創(chuàng)新互聯(lián)

一、同源策略

創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、潁泉網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為潁泉等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能不能使用??梢哉f(shuō)Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。同源策略會(huì)阻止一個(gè)域的javascript腳本和另外一個(gè)域的內(nèi)容進(jìn)行交互。所謂同源(即指在同一個(gè)域)就是兩個(gè)頁(yè)面具有相同的協(xié)議,ip和端口號(hào)。

二、同源策略的限制:
無(wú)法讀取非同源網(wǎng)頁(yè)的 Cookie、LocalStorage 和 IndexedDB;
無(wú)法接觸非同源網(wǎng)頁(yè)的 DOM;
無(wú)法向非同源地址發(fā)送 AJAX 請(qǐng)求;

三、options 請(qǐng)求
options 請(qǐng)求就是預(yù)檢請(qǐng)求,可用于檢測(cè)服務(wù)器允許的 http 方法。當(dāng)發(fā)起跨域請(qǐng)求時(shí),由于安全原因,觸發(fā)一定條件時(shí)瀏覽器會(huì)在正式請(qǐng)求之前自動(dòng)先發(fā)起 OPTIONS 請(qǐng)求,即 CORS 預(yù)檢請(qǐng)求,服務(wù)器若接受該跨域請(qǐng)求,瀏覽器才繼續(xù)發(fā)起正式請(qǐng)求。某些請(qǐng)求不會(huì)觸發(fā)CORS預(yù)檢請(qǐng)求,這樣的請(qǐng)求一般稱為 “簡(jiǎn)單請(qǐng)求” ,而會(huì)觸發(fā)預(yù)檢的請(qǐng)求則是 “復(fù)雜請(qǐng)求” 。

如果服務(wù)中存在鑒權(quán)的過(guò)濾器(Filter),由于option請(qǐng)求是瀏覽器自動(dòng)請(qǐng)求的,無(wú)法手動(dòng)設(shè)置請(qǐng)求頭和請(qǐng)求體,因此在option請(qǐng)求可能鑒權(quán)失敗,從而導(dǎo)致cors認(rèn)證失敗。

四、解決方法
1.springmvc項(xiàng)目

import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebFilter(filterName = "corsFilter", urlPatterns = "/*")
@Configuration
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
            ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
         //這里設(shè)置為* 可能會(huì)不生效
        response.setHeader("Access-Control-Allow-Origin", origin);
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin,request-origin,Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,token");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Expose-Headers", "*");
        filterChain.doFilter(request, response);
    }
    @Override
    public void destroy() {
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
}

2.java EE項(xiàng)目

import java.io.File;
import java.io.FileWriter;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Configuration
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        this.writeFile("go to CorsFilter");
        HttpServletRequest request = (HttpServletRequest) req;
        String allowOrigin = request.getHeader("Origin");
        HttpServletResponse response = (HttpServletResponse) res;
        //這里設(shè)置為* 可能會(huì)不生效
        response.setHeader("Access-Control-Allow-Origin", allowOrigin);
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin,request-origin,Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,token");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Expose-Headers", "*");
        chain.doFilter(request, response);
    }
    @Override
    public void init(FilterConfig filterConfig) {}
    @Override
    public void destroy() {}
}

web.xml中配置該Filter

CorsFiltercom.servlet.CorsFiltertrueCorsFilter/*

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

名稱欄目:Java后端服務(wù)的跨域處理-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://jinyejixie.com/article26/cccjjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站Google、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
团风县| 牙克石市| 邓州市| 临海市| 南郑县| 乌恰县| 七台河市| 瓦房店市| 辽阳市| 体育| 两当县| 天峨县| 双牌县| 漯河市| 南陵县| 柯坪县| 建昌县| 昭平县| 乌拉特中旗| 海南省| 彭水| 清远市| 高邮市| 灵山县| 石台县| 额敏县| 黑龙江省| 吉首市| 文昌市| 资中县| 德庆县| 大竹县| 安康市| 谢通门县| 施秉县| 仁怀市| 桂东县| 瑞安市| 城市| 仁寿县| 图们市|