<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Cross-Origin Resource Sharing協議介紹

      傳統的Ajax請求只能獲取在同一個域名下面的資源,但是HTML5打破了這個限制,允許Ajax發起跨域的請求。瀏覽器是可以發起跨域請求的,比如你可以外鏈一個外域的圖片或者腳本。但是Javascript腳本是不能獲取這些資源的內容的,它只能被瀏覽器執行或渲染。

      在Flash和Silverlight中,服務器需要創建一個crossdomain.xml的文件來允許跨域請求。如果這個文件聲明“http://your.site”允許來自“http://my.site”的請求,則來自“http://my.site”的請求可以訪問所有“http://your.site”的文件。這是一種整個站點層面上的控制模式,要么你允許一個外域的站點訪問,要么拒絕。

      COR不一樣,它是頁面層次的控制模式。每一個頁面需要返回一個名為‘Access-Control-Allow-Origin’的HTTP頭來允許外域的站點訪問。你可以僅僅暴露有限的資源和有限的外域站點訪問。在COR模式中,訪問控制的職責可以放到頁面開發者的手中,而不是服務器管理員。當然頁面開發者需要寫專門的處理代碼來允許被外域訪問。

      另外一個主要的區別是,某個站點的crossdomain.xml文件是最早被瀏覽器獲取并分析的。如果一個外域的站點不允許被訪問,瀏覽器壓根就不會發出跨域請求。

      COR則相反,Javascript先發出跨域請求,然后檢查回復的‘Access-Control-Allow-Origin’頭。如果這個頭允許該外域訪問,則Javascript可以讀取這個回復,否則就被禁止訪問。如果請求不是一個簡單的COR,則向外域服務器發送預檢驗請求,如果回復的頭部允許訪問,則發送跨域請求,否則禁止。

      COR的實現標準就是CORS協議。

      對于瀏覽器來說,COR請求都是Javascript發起的,COR請求有兩種:

      1、簡單的COR請求,它可以直接向外域資源發起請求。它必須僅僅包含簡單的方法和頭,具體定義看[2] 6.1。

      2、如果COR包含復雜的方法和頭,它需要發出預檢驗(Preflight)請求,它先向資源服務器發出一個OPTIONS方法、包含“Origin”頭的請求。該回復可以控制COR請求的方法,HTTP頭以及驗證等信息。只有該請求獲得允許以后,才會發起真實的外域請求。

      下面是一個簡單的COR請求:

      <script language="Javascript" type="text/javascript">

      var client = new XMLHttpRequest();

      client.open("GET", "http://bar.org/b")

      client.onreadystatechange = function() { /* do something */ }

      client.send()

      </script>

      假設這個請求所在頁面的域是“http://foo.org”。 如果來自“http://bar.org/b”的回復包含這樣的頭:

      Access-Control-Allow-Origin: http://foo.org

      則表明,它允許來自“http://foo.org”的跨域請求。

      下面的Javascript會發出預檢驗請求和真實請求:

      <script language="Javascript" type="text/javascript">

      var client = new XMLHttpRequest();

      client.open("GET", "http://bar.org/b")

      client.setRequestHeader('Content-Type','text/html')

      client.onreadystatechange = function() { /* do something */ }

      client.send()

      </script>

      由于“Content-type: text/html”不是一個簡單的頭,它會先向"http://bar.org/b"發出一個OPTIONS的HTTP請求。 回復可能包含這樣的頭:

      Access-Control-Allow-Origin: http://foo.org

      Access-Control-Max-Age: 3628800

      Access-Control-Allow-Methods: GET,PUT, DELETE

      Access-Control-Allow-Headers: content-type

      "Access-Control-Allow-Origin"表明它允許"http://foo.org"發起跨域請求

      "Access-Control-Max-Age"表明在3628800秒內,不需要再發送預檢驗請求,可以緩存該結果

      "Access-Control-Allow-Methods"表明它允許GET、PUT、DELETE的外域請求

      "Access-Control-Allow-Headers"表明它允許跨域請求包含content-type頭

      如果預檢驗請求獲得通過,接下來Javascript就會發起真實的COR請求,過程跟簡單的COR請求類似。

      CORS協議的實現

      現在HTML5的標準如火如荼的在制定和發展中,CORS作為HTML5的一部分,在大部分現代瀏覽器中有所支持,支持(部分支持)CORS協議的瀏覽器有IE8+, Firefox5+, Chrome12+, Safari4+

      服務端實現

      Thinktecture.IdentityModel  這個庫已經為我們的WebAPI,MVC的項目做好了支持,具體參看[6]。

       

      參考資料:

      [1] http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity

      [2] http://www.w3.org/TR/cors/

      [3]Cross-origin_resource_sharing 

      [4]跨域資源共享(Cross-Origin Resource Sharing)實現Ajax跨域請求

      [5]http://restfulobjects.codeplex.com/wikipage?title=Cross%20Origin%20Resource%20Sharing&referringTitle=Documentation 

      [6]CORS support in WebAPI, MVC and IIS with Thinktecture.IdentityModel

      posted @ 2012-09-16 21:47  張善友  閱讀(12491)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕乱码电影| 亚洲成人av在线资源| 99久久精品久久久久久婷婷| 国产精品亚洲二区在线看| 亚洲综合网中文字幕在线| 日韩精品欧美高清区| 久久精品亚洲中文字幕无码网站| 亚洲精品综合第一国产综合| 少妇伦子伦情品无吗| 精品偷拍一区二区三区| 91超碰在线精品| 亚洲av无码乱码在线观看野外| 亚洲午夜香蕉久久精品| 4hu44四虎www在线影院麻豆 | 激情国产一区二区三区四区小说| 欧美情侣性视频| 天堂中文8资源在线8| 92国产精品午夜福利免费| 日韩成人福利视频在线观看 | 五月综合网亚洲乱妇久久| 日韩中文字幕有码av| 精品无码成人片一区二区98| 久久精产国品一二三产品 | 男女性高爱潮免费网站| 在线看国产精品自拍内射| 狠狠噜天天噜日日噜| 新郑市| 国产精品成人午夜久久| 亚洲精品第一区二区三区| 2021av在线天堂网| 亚洲av日韩在线资源| 最新精品国偷自产在线美女足| 极品少妇无套内射视频| 亚洲 欧美 清纯 校园 另类| 国产亚洲精品久久久久秋霞| 成人一区二区三区激情视频| 亚洲最大福利视频网| 综合色天天久久| 日韩一区二区三在线观看| 日日爽日日操| av老司机亚洲精品天堂|