JavaScript跨域呼叫、JSONP

local0發表於2021-09-09

[第1篇] 同源策略與JSONP

瀏覽器是訪問Internet的工具,也是客戶端應用的宿主,它為客戶端應用提供一個寄宿和執行的環境。而這裡所說的應用,基本是指在瀏覽器中執行的客戶端JavaScript程式。雖然是一種解釋性的指令碼語言,JavaScript其實是無比強大的,原則上來講它可以做任何事。但是在能夠在JavaScript指令碼並不都是值得信賴的,所以瀏覽器必須對JavaScript的執行作相應的限制,這就是“同源策略(Same Origin Policy)”。JavaScript指令碼的源決定於其被載入的頁面,而不是其儲存的地址。對於一段透過

標籤的src屬性載入的JavaScript指令碼,它與當前頁面同源。如果Ajax請求返回的不是以JSON表示的資料,而是針對該資料的方法呼叫,毫無疑問聯絡人列表能夠順利呈現在頁面上。這種將JSON物件填充(Padding)到某個JavaScript回撥方法將資料轉換成針對資料的操作語句的形式就是JSONP(JSON Padding)。(閱讀更多…)

[第2篇] 透過擴充套件讓ASP.NET Web API支援JSONP

同源策略(Same Origin Policy)的存在導致了“源”自A的指令碼只能操作“同源”頁面的DOM,“跨源”操作來源於B的頁面將會被拒絕。同源策略以及跨域資源共享在大部分情況下針對的是Ajax請求。同源策略主要限制了透過XMLHttpRequest實現的Ajax請求,如果請求的是一個“異源”地址,瀏覽器將不允許讀取返回的內容。JSONP是一種常用的解決跨域資源共享的解決方案,本文透過自定義JsonMediaTypeFormatter的方式為ASP.NET Web API提供一種“通用”的JSONP實現方案。(閱讀更多…)

[第3篇] W3C的CORS 規範

隨著Web開放的程度越來越高,透過瀏覽器跨域獲取資源的需求已經變得非常普遍。在我看來,如果Web API不能針對瀏覽器提供跨域資源共享的能力,它甚至就不應該被稱為Web API。從另一方面來看,瀏覽器作為進入Internet最大的入口,是各大IT公司的必爭之地,所以瀏覽器市場出現了種類繁多、魚龍混雜的局面。針對這兩點,我們迫切需要一種能夠被各個瀏覽器廠商共同遵循的標準來對跨域資源共享作出規範,這就是由W3C指定2的CORS(Cross-Origin Resource Sharing)規範。(閱讀更多…)

[第4篇] 透過擴充套件讓ASP.NET Web API支援W3C的CORS規範

讓ASP.NET Web API支援JSONP和W3C的CORS規範是解決“跨域資源共享”的兩種途徑,在《透過擴充套件讓ASP.NET Web API支援JSONP》中我們實現了前者,本文透過自定義HttpMessageHandler的方式為ASP.NET Web API提供一種“通用”的CORS實現方案。(閱讀更多…)

[第5篇] ASP.NET Web API自身對CORS的支援

在《透過擴充套件讓ASP.NET Web API支援W3C的CORS規範》中我們透過自定義的HttpMessageHandler為ASP.NET Web API賦予了跨域資源共享的能力,具體來講,這個自定義的CorsMessageHandler的自由主要體現在如下兩個方面:其一,為簡單跨域請求的響應和繼預檢請求後的真實跨域資源請求的響應新增CORS報頭;其二,對從瀏覽器傳送的預檢請求予以響應。實際上ASP.NET Web API本身就提供了針對CORS的支援,就其實現原理來看,與我們的實現沒有本質的區別。(閱讀更多…)

[第6篇] EnableCorsAttribute特性背後的故事

從程式設計的角度來講,ASP.NET Web API針對CORS的實現僅僅涉及到HttpConfiguration的擴充套件方法EnableCors和EnableCorsAttribute特性。但是整個CORS體系不限於此,在它們背後隱藏著一系列的型別,我們將會利用本章餘下的內容對此作全面講述,今天我們就來討論一下用於定義CORS授權策略的EnableCorsAttribute特性背後的故事。(閱讀更多…)

[第7篇] ASP.NET的CORS引擎

由CorsPolicyProvider提供的CorsPolicy表示目標Action採用的資源授權策略,ASP.NET Web API最終需要利用它對具體的跨域資源請求實施授權檢驗並生成相應的CORS響應報頭,CORS授權檢驗和CORS響應報頭的生成是利用ASP.NET的CORS引擎來完成的。(閱讀更多…)

[第8篇] 跨域資源共享(CORS)在ASP.NET Web API中是如何實現的?

在《透過擴充套件讓ASP.NET Web API支援W3C的CORS規範》中,我們透過自定義的HttpMessageHandler自行為ASP.NET Web API實現了針對CORS的支援,實際上ASP.NET Web API自身也是這麼做的,該自定義HttpMessageHandler就是System.Web.Http.Cors.CorsMessageHandler。(閱讀更多…)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/132/viewspace-2805184/,如需轉載,請註明出處,否則將追究法律責任。

相關文章