我們都會發佈一個AJAX請求到本地運行的服務器,即Chrome的加入Origin標以相同來源的請求
xhr.open("POST", "http://localhost:9000/context/request");
xhr.addHeader(someCustomHeaders);
xhr.send(someData);
那也正在從本地主機服務正在執行這個JavaScript的網頁:9000,即這完全看起來像一個同源的請求。
但是,由於某種原因,谷歌瀏覽器總是在生成的請求中設置一個Origin標頭,導致我們的服務器根據錯誤的假設,即CORS請求來阻止請求。
這不會發生在Firefox中。
另外,Firefox和Chrome都沒有發送OPTIONS預檢請求,這是令人困惑的;爲什麼在沒有首先進行初步檢查的情況下設置Origin頭部以確保服務器允許Origin和Custom頭文件?
有沒有人知道在這種情況下發生了什麼?我們是否誤解了CORS規範?
請參閱http://seclab.stanford.edu/websec/csrf/csrf.ppt,它回答了爲什麼Origin標頭對同源POST請求有好處。這是一個CSRF保護機制。 – user239558 2014-05-13 08:53:17