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

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

這篇具有很好參考價(jià)值的文章主要介紹了前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.問題背景

前后端分離項(xiàng)目跨域問題,瀏覽器控制臺(tái)報(bào)錯(cuò):No 'Access-Control-Allow-Origin' header is present on the requested resource. 請(qǐng)求方法為OPTIONS,狀態(tài)值為302或403。

本文解決常見的CORS跨域問題,以及,集成CAS 5.3單點(diǎn)登錄內(nèi)嵌頁面時(shí),發(fā)送復(fù)雜請(qǐng)求產(chǎn)生的跨域問題。

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

二.解決方案

1.Nginx或Tomcat配置

通過Nginx或Tomcat配置,返回相應(yīng)的請(qǐng)求頭,本文采用Tomcat配置方式。

(1)修改conf/web.xml,添加過濾器,若存在其他過濾器添加在最前面。

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
  <init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
  </init-param>
  <init-param>
    <param-name>cors.support.credentials</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>cors.preflight.maxage</param-name>
    <param-value>10</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

(2)此時(shí)tomcat8.5以上版本可能會(huì)報(bào)錯(cuò)javax.servlet.ServletException: 當(dāng)allowedOrigins=[*]時(shí),不允許配置supportsCredentials=[true]

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

去掉20~23行配置,或?qū)ors.allowed.origins配置為允許跨域訪問當(dāng)前服務(wù)器資源的地址,多個(gè)地址用逗號(hào)拼接。

示例:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>http://cpmp.fulongai.cn,http://192.168.2.154:8888</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
  <init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
  </init-param>
  <init-param>
    <param-name>cors.support.credentials</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>cors.preflight.maxage</param-name>
    <param-value>10</param-value>
  </init-param>
</filter>
<filter-mapping>
? <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

至此,大多數(shù)CORS的問題都可以解決了,但對(duì)于復(fù)雜請(qǐng)求仍需進(jìn)一步分析。

2.復(fù)雜請(qǐng)求

對(duì)于復(fù)雜請(qǐng)求,瀏覽器會(huì)先發(fā)送一個(gè)OPTIONS類型的請(qǐng)求進(jìn)行預(yù)檢,服務(wù)端會(huì)根據(jù)請(qǐng)求標(biāo)頭判斷是否允許訪問請(qǐng)求的資源。

舉個(gè)例子:

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

截圖的中的預(yù)檢請(qǐng)求包含請(qǐng)求表頭如下:

Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://192.168.2.154:8888

服務(wù)端應(yīng)允許相應(yīng)的訪問,才能預(yù)檢成功。看看我們之前的配置,GET請(qǐng)求和http://192.168.2.154:8888源都滿足,缺少Access-Control-Request-Headers的authorization支持,因此OPTIONS預(yù)檢返回403,無權(quán)限訪問。

控制臺(tái):

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

仍然報(bào)錯(cuò)No 'Access-Control-Allow-Origin' header is present on the requested resource.

解決方案:

在web.xml中添加相應(yīng)的配置(14行末尾authorization),問題解決:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>http://cpmp.fulongai.cn,http://192.168.2.154:8888</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,authorization</param-value>
  </init-param>
  <init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials,Access-Control-Allow-Headers,Access-Control-Allow-Method,Set-Cookie</param-value>
  </init-param>
  <init-param>
    <param-name>cors.support.credentials</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>cors.preflight.maxage</param-name>
    <param-value>1000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

重啟tomcat,再次請(qǐng)求,請(qǐng)求標(biāo)頭和響應(yīng)頭相對(duì)應(yīng),預(yù)檢通過,可正常訪問。

前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案

至此,問題解決。

參考:

https://tomcat.apache.org/tomcat-8.5-doc/config/filter.html#CORS_Filter

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS文章來源地址http://www.zghlxwxcb.cn/news/detail-430946.html

到了這里,關(guān)于前后端分離項(xiàng)目跨域問題No ‘Access-Control-Allow-Origin‘解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 前后端分離常見跨域問題及解決方法

    1、has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response. 原因:跨域的 allow_headers 沒有設(shè)置authorization 解決方法 ,加個(gè)Authorization就可以 2、has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: The value

    2024年02月01日
    瀏覽(20)
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題
重復(fù)Access-Control-Allow-Origin

    No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題 重復(fù)Access-Control-Allow-Origin

    ? ? ? ? 瀏覽器為了安全考慮,有一個(gè)最基本的安全策略,即同源策略。 ? ? ? ? 同源策略規(guī)定:瀏覽器在解析Ajax請(qǐng)求時(shí),要求瀏覽器的路徑與Ajax的請(qǐng)求的路徑必須滿足三個(gè)要求,即請(qǐng)求的協(xié)議、域名、端口號(hào)都相同,滿足同源策略,可以訪問服務(wù)器,否則,只要有一個(gè)不

    2023年04月17日
    瀏覽(28)
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題
                    
            
重復(fù)Access-Control-Allow-Origin

    No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題 重復(fù)Access-Control-Allow-Origin

    ? ? ? ? 瀏覽器為了安全考慮,有一個(gè)最基本的安全策略,即同源策略。 ? ? ? ? 同源策略規(guī)定:瀏覽器在解析Ajax請(qǐng)求時(shí),要求瀏覽器的路徑與Ajax的請(qǐng)求的路徑必須滿足三個(gè)要求,即請(qǐng)求的協(xié)議、域名、端口號(hào)都相同,滿足同源策略,可以訪問服務(wù)器,否則,只要有一個(gè)不

    2024年02月06日
    瀏覽(23)
  • 瀏覽器同源策略導(dǎo)致跨域問題 No ‘Access-Control-Allow-Origin‘ header 原因及解決方式--(后端、nginx、前端)

    瀏覽器同源策略導(dǎo)致跨域問題 No ‘Access-Control-Allow-Origin‘ header 原因及解決方式--(后端、nginx、前端)

    目錄 現(xiàn)象 原因 瀏覽器同源策略 導(dǎo)致結(jié)果: 解決方案 跨源資源共享(CORS) 各個(gè)端解決方法: 后端: 方式1:重載WebMvcConfigurer方法 方式2:配置監(jiān)聽CorsFilter 方式3:相關(guān)類上加注解?@CrossOrigin 注意事項(xiàng): Nginx解決: 情況1: 前端解決: 本人身份:后端 今天部署線上環(huán)境前端

    2024年01月23日
    瀏覽(25)
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題

    No ‘Access-Control-Allow-Origin‘ header is present on the requested resource關(guān)于vue跨域問題

    ? ? ? ? 瀏覽器為了安全考慮,有一個(gè)最基本的安全策略,即同源策略。 ? ? ? ? 同源策略規(guī)定:瀏覽器在解析Ajax請(qǐng)求時(shí),要求瀏覽器的路徑與Ajax的請(qǐng)求的路徑必須滿足三個(gè)要求,即請(qǐng)求的協(xié)議、域名、端口號(hào)都相同,滿足同源策略,可以訪問服務(wù)器,否則,只要有一個(gè)不

    2024年02月08日
    瀏覽(21)
  • 解決跨域問題:Access to XMLHttpRequest at ‘http://localhost:8080/xxx‘ No ‘Access-Control-Allow-Origin‘ head

    解決跨域問題:Access to XMLHttpRequest at ‘http://localhost:8080/xxx‘ No ‘Access-Control-Allow-Origin‘ head

    當(dāng)我實(shí)現(xiàn)前后端分離的時(shí)候,遇到了這個(gè)問題: Access to XMLHttpRequest at ‘http://localhost:8080/xxx’ from origin ‘http://localhost:63342’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. 后端響應(yīng)沒有帶上“ access-control-allow-origin”和“ access-control-

    2024年02月11日
    瀏覽(160)
  • SpringBoot解決前后端分離跨域問題:狀態(tài)碼403拒絕訪問

    SpringBoot解決前后端分離跨域問題:狀態(tài)碼403拒絕訪問

    最近在寫和同學(xué)一起做一個(gè)前后端分離的項(xiàng)目,今日開始對(duì)接口準(zhǔn)備進(jìn)行 登錄注冊(cè) 的時(shí)候發(fā)現(xiàn)前端在發(fā)起請(qǐng)求后,抓包發(fā)現(xiàn)后端返回了一個(gè) 403 的錯(cuò)誤,解決了很久發(fā)現(xiàn)是【跨域問題】,第一次遇到,便作此記錄? 在后端服務(wù)器啟動(dòng)后,前端頁面也起了起來,然后點(diǎn)擊這個(gè)

    2024年02月03日
    瀏覽(16)
  • axios請(qǐng)求解決跨域問題has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is

    axios請(qǐng)求解決跨域問題has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is

    我們?cè)赩ue實(shí)現(xiàn)axios請(qǐng)求時(shí),出現(xiàn)跨域問題,我們有兩種解決方案(當(dāng)然我們的請(qǐng)求路徑和axios都是沒問題的) ? ?第一種加上CrossOrigin注解 第二種寫一個(gè)config配置類 希望能幫到各位,

    2024年02月12日
    瀏覽(91)
  • 解決Spring Boot前后端分離開發(fā)模式中的跨域問題

    在實(shí)際開發(fā)中,經(jīng)常會(huì)遇到前端Vue應(yīng)用與后端Spring Boot API接口存在跨域訪問的問題。本篇博客將分享解決Spring Boot前端Vue跨域問題的實(shí)戰(zhàn)經(jīng)驗(yàn),幫助開發(fā)者快速解決該問題。 跨域問題是由于瀏覽器的同源策略引起的。同源策略限制了從一個(gè)源加載的文檔或腳本如何與來自另一

    2024年02月10日
    瀏覽(571)
  • SpringBoot 配置CORS處理前后端分離跨域配置無效問題解析

    瀏覽器有跨域限制,非同源策略(協(xié)議、主機(jī)名或端口不同)被視為跨域請(qǐng)求,解決跨域有跨域資源共享( CORS )、反向代理和 JSONP 的方式。本篇通過 SpringBoot 的資源共享配置(CORS)來解決前后端分離項(xiàng)目的跨域,以及從原理上去解決跨域配置不生效的問題。 使用前后端分離開源項(xiàng)

    2023年04月23日
    瀏覽(45)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包