在瀏覽網頁時,其實會用各種Http方法去與Web伺服器取資料或是送資料,最常見的方法是Get;其次則是Post
兩者對一般人來說最大的差異就是 GET會在網址列上顯示參數,Post不會
但Http的方法其實不只Get和Post,以下有更多說明
HTTP定義了八種方法,以不同方式操作指定的資源:
javascript允許向目前的網站或外部網站傳送資料,傳送請求到外部網站時,可能會攜帶使用者資料,所以要先進行 先導請求 Preflighted requests
先導請求會先以 HTTP 的 OPTIONS 方法送出請求到另一個網域,確認後續真實請求是否可安全送出。
當符合以下其中一種條件時,會送出先導請求:
1.使用非簡單方法(GET, HEAD, POST)。
2.使用以下類型除外的標頭:Accept, Accept-Language, Content-Language,Content-Type 非為下列 application/x-www-form-urlencoded, multipart/form-data, 或 text/plain 其中一種(上述類型為簡單標頭,且皆不區分大小寫)。例如 POST 請求連帶的資料是 application/xml 或 text/xml 的 XML 類型資料,那麼先導請求就會先送出。 3.請求中有自訂義標頭,例如自訂義一個 X-PINGOTHER 標頭。
跨來源資源共用(CORS) 是有關於資訊安全的議題,我們可以想一個情況
如果javascript可以任意的修改自己的網頁,也可以在背景執行且隨意地從別的網站擷取資料。
那就可以做出以下攻擊
這樣子用 javascript 輕易地做一個完全相同的假網站,誘使沒注意到網址不同的使用者輸入帳號密碼,幾乎是只要改網址就可以立刻做出多個假網站。為了防止這種情況,網站伺服器需要設定允許 CORS ,才能授權讓跨網站的 javascript 取得資訊。
然後有2類情況,如果希望所有網站都可以跨站請求,要使用這個
Access-Control-Allow-Origin
共有2種值:
如果不要用 javascript,也有另一個 iframe 的方式可以擷取其他網頁,假設不希望自己的網頁被別人用iframe擷取,或是只希望自己的網站可以被
如果要設定同網站才能連,要使用這個
X-Frame-Options
共有三種值:
資安