java - 如何解決跨域重定向攜帶參數(shù)的問題?不使用將參數(shù)拼接在重定向url末尾的方式
問題描述
如何解決跨域重定向攜帶參數(shù)的問題?不使用將參數(shù)拼接在重定向url末尾的方式
需求,項目A在服務(wù)器A上,需要重定向到服務(wù)器B上項目B,并且需要攜帶參數(shù),參數(shù)對用戶不可見,所以不可以將參數(shù)拼接在重定向url后面,各位 還有其他方案嗎?
項目使用 spring
RedirectAttributes.addFlashAttribute 是不可以的,他只能夠在同一個項目之內(nèi)的controll之間重定向。
這個問題沒有解決,各位給個回復頂起啊。
補充問題:(1)樓下回答可以把數(shù)據(jù)放在請求的header里 不過需要對方服務(wù)器需要設(shè)置允許請求頭自定義字段
這個該如何理解?如何實現(xiàn)?
瀏覽器請求服務(wù)器A(不是ajax請求),服務(wù)器A 返回302響應(yīng)以及重定向url 對客戶端進行重定向,此時服務(wù)器A可以將需要傳遞的參數(shù)放置到響應(yīng)頭中,然后瀏覽器對目標url進行重定向,但是此時不會攜帶之前重定向響應(yīng)頭信息啊
如何才能夠讓他攜帶過去呢?
(2)問題二, 服務(wù)器返回302重定向響應(yīng),這個響應(yīng)中能夠包含響應(yīng)體報文嗎???
因為我測試的是使用response寫入數(shù)據(jù),但是瀏覽器端看不到重定向響應(yīng)數(shù)據(jù),這一點在實現(xiàn)上是如何控制的?是不是所有的重定向響應(yīng)都不包含響應(yīng)體?
問題解答
回答1:可以把數(shù)據(jù)放在請求的header里 不過需要對方服務(wù)器需要設(shè)置允許請求頭自定義字段
回答2:服務(wù)器端A向B發(fā)送參數(shù),等B應(yīng)答
B得到參數(shù)保存起來,給A應(yīng)答一個token。A攜帶這個token重定向到B
B接收到A的重定向,根據(jù)token獲取第1步保存好的參數(shù)
回答3:制造一個<form method='POST'>,把參數(shù)填以<input type='hidden' ...>的形式填到<form>里,再用JavaScript觸發(fā)submit(),這些參數(shù)就在地址欄里不可見地帶到目標站點了。
回答4:謝謝邀請,如果兩個服務(wù)都是你自己控制的,加密參數(shù)內(nèi)容就可以了,可以參考 http session 是如何加密解密的,有相關(guān)安全標準的。
回答5:題主要不試試從前端的角度去解決這個問題?就是通過前端發(fā)送一個ajax請求,然后使用jsonp去解決跨域傳參數(shù)的問題
回答6:或者是做一個中間層服務(wù),這樣用戶請求中間層服務(wù)是看不到具體的參數(shù),也控制了跨域問題
回答7:把數(shù)據(jù)和服務(wù)器B的地址寫給瀏覽器的ajax,ajax拿到地址后帶著數(shù)據(jù)post到B服務(wù)器.
回答8:1.如果這兩個服務(wù)器都是你可控的可以通過cookie跨域的方式帶過去,注意只有通過cookie跨域302重定向才能帶著cookie請求頭去訪問B服務(wù)器,別的自定義請求頭瀏覽器是不會帶過去的。2.http協(xié)議并沒有規(guī)定302響應(yīng)時不能帶響應(yīng)體,可能是瀏覽器自動忽略了?3.你可以用307來做,這樣你的post請求就會post到新的uri上去。具體看看rfc2616-307
相關(guān)文章:
1. 一個mysql聯(lián)表查詢的問題2. mysql - 一個表和多個表是多對多的關(guān)系,該怎么設(shè)計3. 運行python程序時出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯誤?4. html5 - iOS的webview加載出來的H5網(wǎng)頁,怎么修改html標簽select的樣式字體?5. python如何不改動文件的情況下修改文件的 修改日期6. javascript - git clone 下來的項目 想在本地運行 npm run install 報錯7. java - 我現(xiàn)在一個servlet中有調(diào)用socket訪問,作為socket的客戶端,8. 主從備份 - 跪求mysql 高可用主從方案9. mysql主從 - 請教下mysql 主動-被動模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?10. python 如何實現(xiàn)PHP替換圖片 鏈接
