国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

跨域的原因和解決

這篇具有很好參考價值的文章主要介紹了跨域的原因和解決。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

什么是跨越問題

跨域問題源于瀏覽器的同源策略限制。

同源策略主要是限制cookie的訪問,在非同源的情況下,A網(wǎng)頁不能夠訪問B網(wǎng)頁, “同源” 即是 協(xié)議 + 域名 + 端口

同源的設(shè)計是為了防止CSRF(跨站請求偽造),舉一個例子來說就是A網(wǎng)站是釣魚網(wǎng)站,當(dāng)?shù)卿涖y行網(wǎng)址存錢賺錢后,保留了一個cookie識別當(dāng)前用戶,如果能夠跨域訪問,A網(wǎng)站就能夠訪問銀行網(wǎng)站的cookie,此時釣魚網(wǎng)站就能夠使用銀行Cookie來登錄轉(zhuǎn)錢了,所以同源策略是必須的。
隨著互聯(lián)網(wǎng)的發(fā)展,同源策略越來越嚴(yán)格,不僅限于Cookie的讀取。

(1)Cookie、LocalStorage 和 IndexDB 無法讀取
(2)DOM 無法獲取
(3)請求的響應(yīng)被攔截

由于這些限制的存在,就出現(xiàn)了跨域問題,下面介紹發(fā)生的情況

如何發(fā)生的跨越問題

在后端沒有做跨域處理的情況下,前端部署在 http://127.0.0.1:5500,后端部署在8818,很明顯不符合上述講到的同源情況,端口不相同,所以會觸發(fā)跨域問題,下面模擬情況的發(fā)生

前端發(fā)起請求
跨域的原因和解決
請求成功,后端也有響應(yīng)返回,但是前端看不到響應(yīng)結(jié)果
跨域的原因和解決

跨域問題解決

這里我在后端進(jìn)行跨域處理,也就是讓后端的接口能夠被任意請求訪問,繼承WebMvcConfigurer,這里相當(dāng)于是讓 SpringBoot 幫你把事情做了,如果要手動的話,后面介紹一下。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //跨域配置
        registry.addMapping("/**")
                //設(shè)置允許跨域請求的域名
                .allowedOriginPatterns("*")
                //設(shè)置允許跨域的方法
                .allowedMethods("GET","POST","PUT","DELETE")
                .allowedHeaders("*")
                //是否允許證書
                .allowCredentials(true)
                //跨域允許時間
                .maxAge(3600);
    }
}

這段代碼的意義就是給HTTP請求的頭部加上允許跨域的頭部字段,使得HTTP請求正常返回結(jié)果

跨域的原因和解決
跨域的原因和解決
上面的方法成功解決了跨域問題,但是還有其他的辦法么,肯定是有很多方法的,分為前端解決,后端解決,或者使用外部的,比如 nginx反向代理解決,這里我主要介紹Java不使用SpringBoot那套的情況下如何解決。

首先要明確目的,解決跨域問題的方法就是在HTTP請求頭上加上相應(yīng)的參數(shù),因此也就是修改HTTP請求頭,考慮采用過濾器攔截接口,獲取到接口的請求頭,加上響應(yīng)的參數(shù),所以我們這里使用Filter來解決。

@Configuration
public class WebMvcConfig implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        chain.doFilter(req, res);
    }
}

再次訪問剛剛的接口,正常訪問
跨域的原因和解決跨域的原因和解決

所以說,跨域問題歸根到底就是不允許訪問,加上允許訪問后的參數(shù)就是解決跨域問題的思路

資料來源

10種跨域問題解決
跨域問題是如何產(chǎn)生的
SpringBoot解決跨域問題文章來源地址http://www.zghlxwxcb.cn/news/detail-495981.html

到了這里,關(guān)于跨域的原因和解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ElasticSearch】關(guān)于es跨域的問題

    本文目錄 一、使用es的head插件 二、其他說明 在使用es的head插件時,默認(rèn)的9100,需要訪問es的默認(rèn)端口9200時,會出現(xiàn)跨域問題,此時只需要修改一下es的配置文件即可。 在 elasticsearch.yml 中添加開啟跨域的配置: 說明: http.cors.enabled 是否開啟跨域 http.cors.allow-origin 允許誰訪問

    2024年02月11日
    瀏覽(20)
  • 項目里面怎么解決跨域的?

    一.前端配置跨域 proxy解決跨域 在vue.config.js中通過proxy devServer中配置反向代理。 Nginx反向代理 在nginx.conf 的配置 jsonp解決跨域 Jsonp 原理:動態(tài)獲取script標(biāo)簽 ? 缺點(diǎn):只適用于get請求 cors解決跨域(后端常用) 還有好幾種但是常用的也就是這幾種,小伙伴們有啥需要補(bǔ)充的評

    2024年02月10日
    瀏覽(88)
  • js跨域的解決方案

    js跨域的解決方案

    指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,簡單來說是瀏覽器同源政策的限制,瀏覽器針對于ajax的限制。 同源政策 兩個頁面擁有相同的 協(xié)議,端口,域名 就是同源,如果有一個不相同就是不同源。 同源政策產(chǎn)生的目的 保護(hù)用戶信息安全,防止一些網(wǎng)站盜取用戶信息。 常見

    2024年02月10日
    瀏覽(778)
  • 解決跨域的幾種方式

    利用 script 標(biāo)簽可以跨域加載資源的特性,通過動態(tài)創(chuàng)建一個 script 標(biāo)簽,然后將響應(yīng)數(shù)據(jù)作為回調(diào)函數(shù)的參數(shù)返回,從而實(shí)現(xiàn)跨域請求資源。該方式只支持 GET 請求方式,且不支持發(fā)送 POST 等其它請求。 客戶端代碼: 服務(wù)端應(yīng)返回如下格式的響應(yīng)數(shù)據(jù): 客戶端創(chuàng)建一個 sc

    2024年02月09日
    瀏覽(89)
  • 解決前端跨域的幾種方法

    解決前端跨域的幾種方法

    一、跨域報錯 ????????在我們實(shí)際開發(fā)過程中,都有遇到過跨域的問題,跨域報錯如下: 二、為什么會報跨域? ????????跨域的本質(zhì)是瀏覽器基于同源策略的一種安全手段,主要是考慮到用戶的信息安全。何為同源策略呢?同源策略是一種約定,它是瀏覽器最核心也

    2024年02月09日
    瀏覽(90)
  • axios如何解決跨域的方案

    由于解決跨域需要用到headers屬性,所以在axios形參中需要用對象形式包裹,同時api接口也要放在url屬性當(dāng)中, 廢話不多說,直接上代碼,然后在請求接口 ---- 到瀏覽器的控制臺 — 點(diǎn)擊剛剛請求的接口 ---- 找到Request Headers 下 ----application/octet-stream ,如果有看到這個屬性代表解

    2024年02月11日
    瀏覽(90)
  • 跨域的五種解決方案詳解

    跨域的五種解決方案詳解

    CORS :全稱cross origin resource share (資源共享) 工作原理: 服務(wù)器 在返回響應(yīng)報文的時候,在響應(yīng)頭中 設(shè)置一個允許的header res.setHeader(‘Access-Control-Allow-Origin’, ‘*’) CORS :全稱cross origin resource share (資源共享) 服務(wù)器 在返回響應(yīng)報文的時候,在響應(yīng)頭中 設(shè)置一個允許的h

    2024年02月16日
    瀏覽(89)
  • SpringBoot解決跨域的方法詳細(xì)教程

    Spring Boot提供了多種解決跨域問題的方法,以下是其中幾種常用的方法: 使用@CrossOrigin注解是一種簡單且快速的解決跨域問題的方法。在Spring Boot的Controller類或方法上添加@CrossOrigin注解,可以指定允許跨域訪問的源、方法、頭部等信息。 1. 在Controller類或方法上添加@CrossOrig

    2024年02月13日
    瀏覽(35)
  • vue解決跨域的幾種辦法

    vue解決跨域的幾種辦法

    當(dāng)我們遇到請求后臺接口遇到 Access-Control-Allow-Origin 時,那說明跨域了。 跨域是因為瀏覽器的同源策略所導(dǎo)致,同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,同源是指:域名、協(xié)議、端口相同 解決跨域常用方法: 一、VUE中常用proxy來解決跨

    2024年02月15日
    瀏覽(95)
  • 跨域的五種最常見解決方案

    在開發(fā)Web應(yīng)用程序時,一個常見的問題是如何處理跨域請求。跨域請求是指來自不同源的請求,這些請求可能會受到瀏覽器的限制而不能被正常處理。在這篇文章中,我們將探討跨域請求的常見解決方案,并了解每種解決方案的優(yōu)缺點(diǎn)。 一、JSONP JSONP是一種常見的跨域請求解

    2024年02月01日
    瀏覽(100)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包