首先我們來寫兩個簡單的伺服器:
server.js 如下
test.html 如下,它請求8887埠
hello world
don't speak
server2.js 如下
然後我們把他們都啟動.
當我們訪問127.0.0.1:8888 時,它會向 127.0.0.1:8887 傳送乙個ajax 請求。這個請求就是跨域的請求。
顯然這時候,會報錯,如下
它提示 'access-control-allow-origin' 頭沒有被設定,而這個就是服務端允許跨域的header 。
那我們可以去設定一下:
重啟server2.js ,重新整理之前的網頁,發現可以正確傳送ajax 請求,同時也返回了『12345』.
實際上當沒有設定 'access-control-allow-origin' 時,瀏覽器也會傳送ajax 請求到指定的位址(『request come』 列印出來了),但是,在返回的頭中,瀏覽器沒有找到 'access-control-allow-origin' 為『*』 時,就會自動忽略這個請求返回的內容,同時在命令列中報錯。
因此,同源策略實際上,只是瀏覽器的策略。在curl 中,則沒有這個限制。curl 任何傳送的請求都是可以傳送到並返回輸出的(正確情況下)。
header 中 'access-control-allow-origin' 為 『*』 。表示任何網域名稱的頁面,都可以訪問這個服務。因此這個是非常不安全的!我們可以改為:(在瀏覽器中需要把url 中 localhost 改為127.0.0.1 )
response.writehead(200, )
除了在伺服器端設定 『access-control-allow-origin』 ,還可以通過jsonp的方式解決跨域問題。jsonp 就是在script 標籤中使用src 。如下。
hello world
don't speak
CORS跨域請求
瀏覽器的同源策略會導致跨域,這裡同源策略又分為以下兩種 只要協議 網域名稱 埠有任何乙個不同,都被當作是不同的域,之間的請求就是跨域操作。在同源策略下會禁止跨域,實際上跨域請求時,請求會向伺服器發出,伺服器也會進行響應,但是當收到返回的資料時發現跨域所以忽略了返回的內容並報錯。當請求同時滿足下面兩個...
cors跨域請求
前端使用正常的ajax請求,請求url填寫需要跨域訪問的url 服務端在檢視函式中對response設定access control allow origin欄位 例如def service request 告訴瀏覽器發的請求是合法的 response access control allow or...
CORS 跨域請求原理
摘要 cors,乙個看似有點 冷門 的領域,但在日常開發中實際上經常碰到這方面的問題。縱觀各大技術論壇,卻沒有幾個帖子能講透cors的那點事,本期雲享團邀請嘉賓深扒了cors的中外家史,為你打通跨域請求的 任督二脈 在日常的專案開發時會不可避免的需要進行跨域操作,而在實際進行跨域請求時,經常會遇到類...