重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
前言:上篇總結(jié)了下WebApi的接口測試工具的使用,這篇接著來看看WebAPI的另一個常見問題:跨域問題。本篇主要從實例的角度分享下CORS解決跨域問題一些細節(jié)。
一、跨域問題的由來
同源策略:出于安全考慮,瀏覽器會限制腳本中發(fā)起的跨站請求,瀏覽器要求JavaScript或Cookie只能訪問同域下的內(nèi)容。
正是由于這個原因,我們不同項目之間的調(diào)用就會被瀏覽器阻止。比如我們最常見的場景:WebApi作為數(shù)據(jù)服務(wù)層,它是一個單獨的項目,我們的MVC項目作為Web的顯示層,這個時候我們的MVC里面就需要調(diào)用WebApi里面的接口取數(shù)據(jù)展現(xiàn)在頁面上。因為我們的WebApi和MVC是兩個不同的項目,所以運行起來之后就存在上面說的跨域的問題。
二、跨域問題解決原理
CORS全稱Cross-Origin Resource Sharing,中文全稱跨域資源共享。它解決跨域問題的原理是通過向http的請求報文和響應(yīng)報文里面加入相應(yīng)的標識告訴瀏覽器它能訪問哪些域名的請求。比如我們向響應(yīng)報文里面增加這個Access-Control-Allow-Origin:http://localhost:8081,就表示支持http://localhost:8081里面的所有請求訪問系統(tǒng)資源。其他更多的應(yīng)用我們就不一一列舉,可以去網(wǎng)上找找。
三、跨域問題解決細節(jié)
下面我就結(jié)合一個簡單的實例來說明下如何使用CORS解決WebApi的跨域問題。
1、場景描述
我們新建兩個項目,一個WebApi項目(下圖中WebApiCORS),一個MVC項目(下圖中Web)。WebApi項目負責提供接口服務(wù),MVC項目負責頁面呈現(xiàn)。如下:
其中,Web與WebApiCORS端口號分別為“27239”和“27221”。Web項目需要從WebApiCORSS項目里面取數(shù)據(jù),很顯然,兩個項目端口不同,所以并不同源,如果使用常規(guī)的調(diào)用方法肯定存在一個跨域的問題。
簡單介紹下測試代碼,Web里面有一個HomeController
public class HomeController : Controller { // GET: Home public ActionResult Index() { return View(); } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。