127還是localhost....?

前幾天剛發現了一跨域問題,本來吧跨域問題也挺好解決的。

網上搜點教程,該怎么配置就怎么配置就完事了。

但是今天這個跨域問題有點棘手,問題就出在127.0.0.1還是localhost上面

先放一下一開始在127.0.0.1解決跨域的代碼

前端

```HTML
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Ajax Requests</title><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head><body><button id="sendPostRequest">Send Post Request</button><button id="sendGetRequest">Send Get Request</button><script>$("#sendPostRequest").click(function () {var stringValue = "caiyi";$.ajax({type: "POST",withCredentials: true,xhrFields: { withCredentials: true },url: "http://localhost:8081/testPost",data: "username=" + encodeURIComponent(stringValue),success: function (response) {console.log(response);},error: function (error) {console.log(error);}});});$("#sendGetRequest").click(function () {var customParam = "caiyi";$.ajax({type: "GET",withCredentials: true,xhrFields: { withCredentials: true },url: "http://localhost:8081/testGet/caiyi",success: function (response) {console.log(response);},error: function (error) {console.log(error);}});});</script>
</body></html>

后端

package com.example.springmvcdemo.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class GlobalCorsConfig {@Beanpublic CorsFilter corsFilter() {//1. 添加 CORS配置信息CorsConfiguration config = new CorsConfiguration();//放行哪些原始域config.addAllowedOrigin("http://127.0.0.1:5500/");//是否發送 Cookieconfig.setAllowCredentials(true);//放行哪些請求方式config.addAllowedMethod("*");//放行哪些原始請求頭部信息config.addAllowedHeader("*");//暴露哪些頭部信息config.addExposedHeader("*");//2. 添加映射路徑UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();corsConfigurationSource.registerCorsConfiguration("/**",config);//3. 返回新的CorsFilterreturn new CorsFilter(corsConfigurationSource);}
}

接口:

package com.example.springmvcdemo.web;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;@RestController
public class TestController {@PostMapping("/testPost")public String test(@RequestParam String username, HttpSession session){System.out.println(username);System.out.println(session);if (username != null){System.out.println(username);session.setAttribute(username,"測試session屬性");System.out.println("測試獲取:"+session.getAttribute(username));return "ok";}return "err";}@GetMapping("/testGet/{username}")public String test(HttpSession session, @PathVariable String username){System.out.println(username);System.out.println(session);System.out.println("get請求:"+session.getAttribute(username));return "ok";}
}

但是問題就在于兩次請求前端并沒有帶上自身的cookie,通過查看請求可以發現請求回來的sessionid是不同的

而且控制臺打印出來的session對象也不是一個,但是!但是來了:

這里先科普下cors:

CORS (Cross-Origin Resource Sharing,跨域資源共享)是一個系統,它由一系列傳輸的HTTP頭組成,這些HTTP頭決定瀏覽器是否阻止前端 JavaScript 代碼獲取跨域請求的響應。

同源安全策略 默認阻止“跨域”獲取資源。但是 CORS 給了web服務器這樣的權限,即服務器可以選擇,允許跨域請求訪問到它們的資源。

  • Access-Control-Allow-Origin
  • 指示請求的資源能共享給哪些域。
  • Access-Control-Allow-Credentials
  • 指示當請求的憑證標記為 true 時,是否響應該請求。

當我打開控制臺查看響應頭的時候會發現這兩個屬性是被設置了的,這就說明我們的后端cors配置已經生效了!

但是為什么會不好使呢?

于是我經過各種百度之后懷疑會不會是127.0.0.1這個域名的問題,于是吧前端啟動的服務端口由127.0.0.1改到localhost,并修改對應的后端cors跨域配置

問題出奇的解決了,但我百思不得其解

修改后的后端代碼:

package com.example.springmvcdemo.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class GlobalCorsConfig {@Beanpublic CorsFilter corsFilter() {//1. 添加 CORS配置信息CorsConfiguration config = new CorsConfiguration();//放行哪些原始域config.addAllowedOrigin("http://localhost:5500/");//是否發送 Cookieconfig.setAllowCredentials(true);//放行哪些請求方式config.addAllowedMethod("*");//放行哪些原始請求頭部信息config.addAllowedHeader("*");//暴露哪些頭部信息config.addExposedHeader("*");//2. 添加映射路徑UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();corsConfigurationSource.registerCorsConfiguration("/**",config);//3. 返回新的CorsFilterreturn new CorsFilter(corsConfigurationSource);}
}

希望路過的各路大神可以指點一下,初步懷疑可能是springmvc的跨域配置不支持127.0.0.1,或者瀏覽器的同源策略有什么其他的隱形附加條件(已迷茫)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40854.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vim腳本編寫:自動化任務與自定義命令

Vim腳本&#xff08;Vim Script&#xff09;是一種強大的工具&#xff0c;用于擴展和自動化Vim編輯器的功能。通過編寫Vim腳本&#xff0c;你可以創建自定義命令、自動化常見任務、增強編輯器功能&#xff0c;以及提高你的工作效率。本文將介紹Vim腳本編寫的基礎知識和一些實用…

預制菜工廠MES系統:具體功能與應用場景

在現代化食品工業中&#xff0c;預制菜&#xff08;Ready-to-Eat, RTE&#xff09;因其方便快捷、衛生安全及營養均衡的特點&#xff0c;迅速在餐飲行業中占據重要地位。為了進一步提升預制菜工廠的生產效率、保障產品質量并降低生產成本&#xff0c;制造執行系統&#xff08;M…

代碼隨想錄訓練營第二十八天 122買賣股票的最佳時間II 55跳躍游戲 45跳躍游戲II 1005K次取反后最大化的數組和

第一題&#xff1a; 原題鏈接&#xff1a;122. 買賣股票的最佳時機 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 這題十分簡單&#xff0c;就是把相鄰天數的金額相減&#xff0c;如果發現大于0就加到res中&#xff0c;返回res即可 代碼如下&#xff1a; …

error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope 的參考解決方法

文章目錄 寫在前面一、問題描述二、解決方法參考鏈接 寫在前面 自己的測試環境&#xff1a; Ubuntu20.04&#xff0c;OpenCV 4.2.0 一、問題描述 編譯 OpenCV 的程序時&#xff0c;出現如下報錯 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope二、解決…

MySQL中的可插拔身份驗證(Pluggable Authentication)(二)

Pluggable Authentication&#xff08;PAM&#xff0c;即可插拔式認證模塊&#xff09;是一種高效且靈活的用戶級別的認證方式&#xff0c;廣泛應用于現代操作系統&#xff0c;特別是Linux服務器中。它允許數據庫管理員&#xff08;DBAs&#xff09;為MySQL用戶帳戶選擇和更改不…

ffmpeg將多個yuv文件編碼為MP4視頻文件

一、編碼方案 在視頻錄制時&#xff0c;每一幀保存為一個yuv文件&#xff0c;便于糾錯和修改。在編碼為MP4文件時&#xff0c;我的方案是將所有yuv文件先轉碼為單個MP4文件&#xff0c;然后使用ffmpeg的concat功能拼接為完整的視頻。 二、shell腳本 #!/bin/bash# 檢查參數數量…

MYSQL8.0環境部署

創建用戶 groupadd mysql useradd -g mysql mysql 刪除原來的包 # rpm -qa|grep mysql # rpm -qa|grep mari mariadb-libs-5.5.68-1.el7.x86_64 # rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 解壓 cd /usr/local & mkdir mysql cd mysql # cp mysql-8…

Ubuntu 22.04 安裝中文字體

筆者在用OpenCV4.9處理圖片加水印時&#xff0c;中文亂碼。原來是Ubuntu 22.04發行版缺少中文字體支持&#xff0c;因此&#xff0c;筆者就找資料安裝了需要的中文字體&#xff0c;特此記錄&#xff0c;以備后查。 1、打開終端&#xff1a; 2、更新軟件包列表&#xff1a; su…

【LC刷題】DAY22:491 46 47 332 51 37

【LC刷題】DAY22&#xff1a;491 46 47 332 51 37 文章目錄 【LC刷題】DAY22&#xff1a;491 46 47 332 51 37491. 非遞減子序列 [link](https://leetcode.cn/problems/non-decreasing-subsequences/description/)46. 全排列 [link](https://leetcode.cn/problems/permutations…

水利行業的智慧化轉型實踐:結合具體案例,探討智慧水利在提升水資源利用效率、改善水生態環境方面的實際效果

目錄 一、引言 二、智慧水利的定義與意義 三、智慧水利在提升水資源利用效率方面的實踐 1. 智慧灌溉系統 2. 智慧供水系統 3. 智慧水務管理平臺 四、智慧水利在改善水生態環境方面的實踐 1. 智慧水質監測系統 2. 智慧水生態修復系統 3. 智慧防洪減災系統 五、具體案例…

如何在 Odoo 16 中添加計算字段的搜索過濾器

首先&#xff0c;了解 Odoo 使用計算字段的原因很重要。當我們需要從其他字段獲取計算值或計算值時&#xff0c;就會使用計算字段。換句話說&#xff0c;不是從數據庫中檢索值&#xff0c;而是可以使用函數計算字段的值。計算字段的一個例子是產品總金額&#xff0c;即通過將產…

EtherCAT通訊介紹

一、EtherCAT簡介 EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;是一種實時以太網技術&#xff0c;是由德國公司Beckhoff Automation在2003年首次推出的。它是一種開放的工業以太網標準&#xff0c;被設計用于滿足工業自動化應用中的高性能和低…

匯聚榮拼多多評價好不好?

匯聚榮拼多多評價好不好?在探討電商平臺的口碑時&#xff0c;用戶評價是衡量其服務質量和商品質量的重要指標。拼多多作為國內領先的電商平臺之一&#xff0c;其用戶評價自然成為消費者選擇購物平臺時的參考依據。針對“匯聚榮拼多多評價好不好?”這一問題&#xff0c;可以從…

Vue3 Hooks 用法 scrollTop, mousemoveHandler,useCountDown

三個實例來自 learn_vue: 【教學工程】學習vue2/vue3 (gitee.com) 目錄 1. 何為Hooks 2. 使用場景 3. 常見的 Hooks 函數 4. 實例 4.1簡易hook 例子 4.2 自定義scrolltop例子 4.3 mousemoveHandler例子 4.4 useCountDown例子 1. 何為Hooks Hooks 是一種函數&#xff0c;用于…

vue css 鏈式布局模式

<div class"pp-wrap"> <div class"pp-left"><!--跳活動反思--><div class"even-box" v-for"(item,index) in trackingPtoPLeftList" :key"index" click"jumpReview(item)"><div …

echarts柱狀選中shadow陰影背景寬度設置

使用line&#xff0c;寬度增大到所需要的寬度&#xff0c;設置下顏色透明度就行 tooltip: {trigger: axis,//把陰影的層級往下降z:-15,axisPointer: {type: line,lineStyle: {color: rgba(150,150,150,0.3),width: 44,type: solid,},}, }, series: [{type: bar,barWidth:20,//…

python自動化辦公之BeautifulSoup爬取并解析html文本

用到的庫&#xff1a;BeautifulSoup 實現效果&#xff1a;爬取網站內容&#xff0c;拿到html文本并解析html文本 代碼&#xff1a; 先爬取 # 先導入requests包 import requests urlhttps://www.baidu.com responserequests.get(url) # 做1個斷言&#xff0c;如果執行成功&a…

【C語言】—— 文件操作(上)

【C語言】—— 文件操作&#xff08;上&#xff09; 一、 為什么使用文件二、 什么是文件2.1、 程序文件2.2、 數據文件2.3、 文件名2.4、二進制文件與文本文件 三、 文件的打開和關閉3.1、流和標準流&#xff08;1&#xff09;流&#xff08;2&#xff09;標準流 3.2、文件指針…

64.函數參數和指針變量

目錄 一.函數參數 二.函數參數和指針變量 三.視頻教程 一.函數參數 函數定義格式&#xff1a; 類型名 函數名(函數參數1,函數參數2...) {代碼段 } 如&#xff1a; int sum(int x&#xff0c;int y) {return xy; } 函數參數的類型可以是普通類型&#xff0c;也可以是指針類…

Python可實現各種算法庫之algorithms使用詳解

概要 在軟件開發和計算機科學領域,算法是解決問題的核心工具。Python 作為一種廣泛使用的編程語言,提供了多種內置和第三方庫來實現各種算法。algorithms 庫是一個集合了多種常用算法和數據結構的 Python 庫,旨在幫助開發者快速實現和應用這些算法。本文將詳細介紹 algorit…