跨站請求報錯解決方法

爲了實驗,我們開2個Web服務器,一個監聽在3000另一個監聽3001端口,不妨稱作站點A和站點B。下圖是B站點通過AJAX訪問A站點,可以看到有報錯。
在這裏插入圖片描述
這是因爲瀏覽器爲了安全目的阻止了這個「跨站請求」,我們把這個策略叫做same origin policy。爲了繞開這個限制,有一個規範:Cross-Origin Resource Sharing (CORS)。

CORS的基本原理是這樣的。

  1. 瀏覽器發現B要跨站訪問A的資源
  2. 瀏覽器向A發送一個HTTP請求,問:誰可以訪問你的資源呢?它不是用GET方法也不是用POST方法,而是用OPTIONS方法
  3. A回覆一個HTTP響應,這個HTTP的頭部包含了一個信任的站點列表,我們把這個HTTP頭部叫做:Access-Control-Allow-Origin
  4. 這樣瀏覽器就知道站點B能不能訪問站點A了

在步驟3中,需要站點A的程序員做一些開發工作,目的是構造合適的Access-Control-Allow-Origin。需要在HTTP頭部中包含這幾個字段:

Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-Type, Origin, Referer, User-Agent
Access-Control-Max-Age: 86400

如果允許所有站點訪問,也可以用通配符,即:Access-Control-Allow-Origin: *。更多資料可以查閱CORS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章