nginx跨域配置

    首先,貼上nginx work的配置html

server{
listen 8099;
server_name wdm.test.cn;
location / {nginx

  // 沒有配置OPTIONS的話,瀏覽器若是是自動識別協議(http or https),那麼瀏覽器的自動OPTIONS請求會返回不能跨域
  if ($request_method = OPTIONS ) {
    add_header Access-Control-Allow-Origin "$http_origin";
    add_header Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, DELETE";
    add_header Access-Control-Max-Age "3600";
    add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
    add_header Access-Control-Allow-Credentials "true";
    add_header Content-Length 0;
    add_header Content-Type text/plain;
    return 200;
  }
  add_header 'Access-Control-Allow-Origin' '$http_origin';
  add_header 'Access-Control-Allow-Credentials' 'true';
  add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS';
  add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
  proxy_pass http://127.0.0.1:8080;
  }
}ajax

 

    其次,既然碰到了就想理解下爲何須要這樣,一開始腦殼還真鑽進去了。跨域

   如下引自知乎:瀏覽器

  • DOM同源策略:禁止對不一樣源頁面DOM進行操做
  • XmlHttpRequest同源策略:禁止向不一樣源的地址發起HTTP請求
AJAX同源策略主要用來防止CSRF攻擊。若是沒有AJAX同源策略,攻擊過程以下:
咱們發起的每一次HTTP請求都會全額發送request地址對應的cookie,那麼
  1. 用戶登陸了本身的銀行頁面向用戶的cookie中添加用戶標識
  2. 用戶瀏覽了惡意頁面 。執行了頁面中的惡意AJAX請求代碼
  3. 發起AJAX HTTP請求,請求同時對應cookie也同時發送過去
  4. 銀行頁面從發送的cookie中提取用戶標識,驗證用戶標識無誤,response中返回請求數據。此時數據泄露。
  5. 因爲Ajax的後臺執行,此時用戶沒有意識這一過程。
     引用內容完畢。
     從上面這段文字可知,若是在不須要服務器容許的前提下就可以進行跨域ajax請求的話,那麼一個黑客網站只要你用了,那麼你登陸
過的其它系統的用戶信息他均可以獲取獲得。
 
     好吧,再引一段

        簡單的說,你把Cookie託付給瀏覽器保存,瀏覽器要保證你的Cookie不被惡意網站利用。安全

        同源策略並不能防止DDos,由於跨域的Ajax也會被請求,若是用Ajax請求,瀏覽器會先發出 服務器

   請求,而且帶上的Cookie。拿到的響應以後(可能有敏感數據),瀏覽器纔會根據Headercookie

   裏的Access-Control-Allow-Origin決定是否把結果交給裏的腳本。(或者先發一個OPTIONS請求看一下CORS設網站

   置,再決定是否要發真正的請求。)spa

       所以瀏覽器只是起到了最基本的防護,在寫程序的時候仍是要注意防護CSRF,好比關鍵操做不要用GET,POST請求要作額外的驗證(
   驗證碼,隨機數,Refer,Token)等等。
    引用完畢,, 不過有個疑問出現了,上面我提到OPTIONS是由於查詢協議須要的,可是從這裏來看就是去看看
跨域設置而已。但願有懂的朋友幫忙肯定一下。

以上知乎內容轉自:https://www.zhihu.com/question/20138568/answer/52659925

看下百度百科對同源策略的說法:
同源策略,它是由 Netscape提出的一個著名的 安全策略
如今全部支持JavaScript 的瀏覽器都會使用這個策略。
所謂同源是指,域名,協議,端口相同。
當一個瀏覽器的兩個tab頁中分別打開來 百度和谷歌的頁面
當瀏覽器的百度tab頁執行一個腳本的時候會檢查這個腳本是屬於哪一個頁面的,
即檢查是否同源,只有和百度同源的腳本纔會被執行。[1]  
若是非同源,那麼在請求數據時,瀏覽器會在控制檯中報一個異常,提示拒絕訪問。
 
同源策略的精髓很簡單:它認爲自任何站點裝載的信賴內容是不安全的。當被 瀏覽器半信半疑的腳本運行在 沙箱時,
它們應該只被容許訪問來自同一站點的資源,而不是那些來自其它站點可能懷有惡意的資源。
 
就是說瀏覽器不容許你進行跨域操做,可是也開了個口子,若是某服務就是但願你們在哪都能調用我,固然通常狀況下是公司內部不一樣項目之間調用
用到這種場景較爲日常,否則你寫個誰均可以攻擊你的網站幹啥呀,讓別人在腳本能夠調用你的服務對你的服務器而言沒有用,產品也沒有增大曝光率,
簡直百害而無一利。
 
 順便轉轉講XSS、CSRF的博文:
http://blog.csdn.net/ghsau/article/details/17027893
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
相關文章
相關標籤/搜索