1. 程式人生 > >Acticle 23:有關瀏覽器中使用js跨域獲取資料的描述

Acticle 23:有關瀏覽器中使用js跨域獲取資料的描述

題目如下:
下面有關瀏覽器中使用js跨域獲取資料的描述,說法錯誤的是?
A.域名、埠相同,協議不同,屬於相同的域
B.js可以使用jsonp進行跨域
C.通過修改document.domain來跨子域
D.使用window.name來進行跨域

答案:D

1.CORS

CORS(Corss-Origin Resource
Sharing,跨資源共享),基本思想是使用自定義的HTTP頭部讓瀏覽器與伺服器進行溝通,從而決定請求或響應的成功或失敗。即給請求附加一個額外的Origin頭部,其中包含請求頁面的源資訊(協議、域名和埠),以便伺服器根據這個頭部決定是否給予響應。

2.document.domain

將頁面的document.domain設定為相同的值,頁面間可以互相訪問對方的JavaScript物件。
注意:
不能將值設定為URL中不包含的域;
鬆散的域名不能再設定為緊繃的域名。

3.影象Ping

var img=new Image();
img.onload=img.onerror=function(){
… …
}
img.src=”url?name=value”;
請求資料通過查詢字串的形式傳送,響應可以是任意內容,通常是畫素圖或204響應。
影象Ping最常用於跟蹤使用者點選頁面或動態廣告曝光次數。
缺點:
只能傳送GET請求;
無法訪問伺服器的響應文字,只能用於瀏覽器與伺服器間的單向通訊。

4.Jsonp

var script=document.createElement(“script”);
script.src=”url?callback=handleResponse”;
document.body.insertBefore(script,document.body.firstChild);
JSONP由兩部分組成:回撥函式和資料
回撥函式是接收到響應時應該在頁面中呼叫的函式,其名字一般在請求中指定。
資料是傳入回撥函式中的JSON資料。
優點:
能夠直接訪問響應文字,可用於瀏覽器與伺服器間的雙向通訊。
缺點:
JSONP從其他域中載入程式碼執行,其他域可能不安全;
難以確定JSONP請求是否失敗。

5.Comet

Comet可實現伺服器向瀏覽器推送資料。
Comet是實現方式:長輪詢和流
短輪詢即瀏覽器定時向伺服器傳送請求,看有沒有資料更新。

長輪詢即瀏覽器向伺服器傳送一個請求,然後伺服器一直保持連線開啟,直到有資料可傳送。傳送完資料後,瀏覽器關閉連線,隨即又向伺服器發起一個新請求。其優點是所有瀏覽器都支援,使用XHR物件和setTimeout()即可實現。
流即瀏覽器向伺服器傳送一個請求,而伺服器保持連線開啟,然後週期性地向瀏覽器傳送資料,頁面的整個生命週期內只使用一個HTTP連線。

6.WebSocket

WebSocket可在一個單獨的持久連線上提供全雙工、雙向通訊。

WebSocket使用自定義協議,未加密的連線時ws://;加密的連結是wss://。
var webSocket=new WebSocket(“ws://”);
webSocket.send(message);
webSocket.onmessage=function(event){
var data=event.data;
… ….
}
注意:
必須給WebSocket建構函式傳入絕對URL;

WebSocket可以開啟任何站點的連線,是否會與某個域中的頁面通訊,完全取決於伺服器;

WebSocket只能傳送純文字資料,對於複雜的資料結構,在傳送之前必須進行序列化JSON.stringify(message))。

優點:
在客戶端和服務端之間傳送非常少的資料,減少位元組開銷。

相關推薦

Acticle 23:有關瀏覽器使用js獲取資料描述

題目如下: 下面有關瀏覽器中使用js跨域獲取資料的描述,說法錯誤的是? A.域名、埠相同,協議不同,屬於相同的域 B.js可以使用jsonp進行跨域 C.通過修改document.domain來跨子域 D.使用window.name來進行跨域 答案:

js獲取資料

目錄   一、通過jsonp跨域 2、通過修改document.domain來跨子域 3、使用window.name來進行跨域 4、使用HTML5中新引進的window.postMessage方法來跨域傳送資料 一、通過jsonp跨域 在js中,我們直接用X

新版本Chrome瀏覽器解決問題

瀏覽器版本:版本 53.0.2785.101 m 最新版要用新的引數 加--user-data-dir windows: "C:\Program Files\Google\Chrome\Appl

js請求資料的3種常用的方法

由於js同源策略的影響,當在某一域名下請求其他域名,或者同一域名,不同埠下的url時,就會變成不被允許的跨域請求。 那這個時候通常怎麼解決呢,對此菜鳥光頭我稍作了整理:1.JavaScript   在原生js(沒有jQuery和ajax支援)的情況下,通常客戶端程式碼是這樣

ajax 獲取資料jsonp使用

昨天幫同事從其他伺服器傳過來的json資料進行處理,遇到該問題。開始我的思路是用ajax直接請求把資料弄出來就OK了,然而出錯了.原因是我使用的ajax 返回型別為json,預設ajax阻止跨服獲取資料的。結合其他博文,ajax的dataType使用jsonp來解決此問題。開始覺得jsonp與js

jQuery使用JSONP實現獲取資料的三種方法詳解

本文例項講述了jQuery使用JSONP實現跨域獲取資料的三種方法。分享給大家供大家參考,具體如下: 第一種方法是在ajax函式中設定dataType為'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a

解決ajax獲取資料的問題

不講原理  只是說說解決的方法吧 1:在servlet中的dopost()方法中宣告一句話: 加一個頭宣告    //  response.setContentType("text/json; charset=utf-8");response.setHeader("Acc

js實現的幾種方法

js中幾種實用的跨域方法原理詳解 這裡說的js跨域是指通過js在不同的域之間進行資料傳輸或通訊,比如用ajax向一個不同的域請求資料,或者通過js獲取頁面中不同域的框架中(iframe)的資料。只要協議、域名、埠有任何一個不同,都被當作是不同的域。 下表給出了相對http://sto

【原創】Vue.js axios 訪問錯誤

1、假如訪問的介面地址為 http://www.test.com/apis/index.php  (php api 介面)2、而開發地址為http://127.0.0.1:8080,當axios發起請求時,出現如下錯誤:Failed to load http://www.test.com/apis/

js方法總結

什麼是跨域? 瀏覽器的安全策略,只要協議,域名,埠有任何一個不同,就被當做不同的域。 下面對http://www.qichedaquan.com的同源檢測 http://www.qichedaquan.com/a.html  // 同源 http://www.qichedaquan.com/b.html  /

瀏覽器擴充套件程式進行: XMLHttpRequest 請求

跨域 XMLHttpRequest 請求https://crxdoc-zh.appspot.com/extensions/xhr 普通網頁能夠使用XMLHttpRequest物件傳送或者接受伺服器資料, 但是它們受限於同源策略. 擴充套件可以不受該限制. 任何擴充套件只要它先獲取了

解決URL包含以及不包含https、www時引起的JS問題

場景:站點的全域名是:https://www.example.com,使用者使用此連結訪問站點時完全正常,但是有時候使用者手動輸入網址時並不會輸入全域名,可能是:www.example.com,也可能

js原生態請求與ajaxjsonp請求

在web開發中我們經常會說起指令碼的跨域訪問的問題,會出現跨域訪問的限制是因為javascript語言安全限制中的同源策略(same-origin policy )所造成的。 同源策略簡單的說就是一段指令碼只能讀取來自於同一來源的資源,這裡的同一來源指的是主機

jsjsonp請求

1、理解jsonp 什麼是跨域? 簡單的來說,出於安全方面的考慮,頁面中的JavaScript無法訪問其他伺服器上的資料,即“同源策略”。而跨域就是通過某些手段來繞過同源策略限制,實現不同伺服器之間通訊的效果。 具體策略限制情況可看下錶: URL 說明 允

JS問題

ole 銀行 cors 情況 響應 control dos 訪問出錯 ont 跨域訪問出錯信息:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘htt

工作遇到的js問題總結

沒事 eid down window function fun class tle 需要 起因:之前在做一個項目的時候有這樣一個問題,127.0.0.1域名上的一個頁面A.html,需要訪問127.0.0.2域名上B.html頁面中的一個方法。這就涉及到JS跨域訪問了,通過

詳解js

-name tor adding code 填充 父域 allow mes document 什麽是跨域? 概念:只要協議、域名、端口有任何一個不同,都被當作是不同的域。 對於端口和協議的不同,只能通過後臺來解決。URL 說明

Js CORS報錯 Response for preflight has invalid HTTP status code 405

control logs web col 奇怪 flight protected protoc tex 轉自:http://www.cnblogs.com/SilenceTom/p/6697484.html 調用接口遇到Response for preflight

thinkphpsession問題

cto jpg access car ls參數 -c style 使用 應用 問題描述 《thinkphp實現短信驗證註冊》中,小編不止記錄了短信驗證碼的實現方法,同時還記錄了圖片驗證碼的實現方法。本地使用,一切正常;後端項目和前端項目都部署到服務器,一切正常;後端項目部署

vue解決問題

.json plugin plugins nco pos pat class 上線 created 方法1.後臺更改header header(‘Access-Control-Allow-Origin:*‘);//允許所有來源訪問 header(‘Access-C