跨域
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)魏都免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。一個(gè)資源會(huì)發(fā)起一個(gè)跨域HTTP請(qǐng)求(Cross-site HTTP request), 當(dāng)它請(qǐng)求的一個(gè)資源是從一個(gè)與它本身提供的第一個(gè)資源的不同的域名時(shí) 。
比如說,域名A(http://domaina.example)的某 Web 應(yīng)用程序中通過標(biāo)簽引入了域名B(http://domainb.foo)站點(diǎn)的某圖片資源(/file/tupian/20230213/404.html),域名A的那 Web 應(yīng)用就會(huì)導(dǎo)致瀏覽器發(fā)起一個(gè)跨站 HTTP 請(qǐng)求。在當(dāng)今的 Web 開發(fā)中,使用跨站 HTTP 請(qǐng)求加載各類資源(包括CSS、圖片、JavaScript 腳本以及其它類資源),已經(jīng)成為了一種普遍且流行的方式。
正如大家所知,出于安全考慮,瀏覽器會(huì)限制腳本中發(fā)起的跨站請(qǐng)求。比如,使用 XMLHttpRequest對(duì)象發(fā)起 HTTP 請(qǐng)求就必須遵守同源策略。 具體而言,Web 應(yīng)用程序能且只能使用 XMLHttpRequest 對(duì)象向其加載的源域名發(fā)起 HTTP 請(qǐng)求,而不能向任何其它域名發(fā)起請(qǐng)求。為了能開發(fā)出更強(qiáng)大、更豐富、更安全的Web應(yīng)用程序,開發(fā)人員渴望著在不丟失安全的前提下,Web 應(yīng)用技術(shù)能越來越強(qiáng)大、越來越豐富。比如,可以使用 XMLHttpRequest 發(fā)起跨站 HTTP 請(qǐng)求。(這段描述跨域不準(zhǔn)確,跨域并非瀏覽器限制了發(fā)起跨站請(qǐng)求,而是跨站請(qǐng)求可以正常發(fā)起,但是返回結(jié)果被瀏覽器攔截了。最好的例子是CSRF跨站攻擊原理,請(qǐng)求是發(fā)送到了后端服務(wù)器無論是否跨域!注意:有些瀏覽器不允許從HTTPS的域跨域訪問HTTP,比如Chrome和Firefox,這些瀏覽器在請(qǐng)求還未發(fā)出的時(shí)候就會(huì)攔截請(qǐng)求,這是一個(gè)特例。)
more:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
CROS
CORS 全稱為 Cross Origin Resource Sharing(跨域資源共享),服務(wù)端只需添加相關(guān)響應(yīng)頭信息,即可實(shí)現(xiàn)客戶端發(fā)出 AJAX 跨域請(qǐng)求。
@CrossOrigin
1.在Controller上直接使用 Controller上的所有請(qǐng)求都可以跨域 ,origins = "*" 代表所有都能請(qǐng)求
@CrossOrigin(origins = "http://domain2.com", maxAge = 3600) @RestController @RequestMapping("/account") public class AccountController { @RequestMapping("/{id}") public Account retrieve(@PathVariable Long id) { // ... } @RequestMapping(method = RequestMethod.DELETE, path = "/{id}") public void remove(@PathVariable Long id) { // ... } }