亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何允許CORS?

如何允許CORS?

如何允許CORS?我試圖在我的Node.js應用程序中支持使用Express.js Web框架的CORS。我已經閱讀了有關如何處理此問題的Google小組討論,并閱讀了一些有關CORS如何工作的文章。首先,我這樣做了(代碼是用CoffeeScript語法編寫的):app.options "*", (req, res) ->   res.header 'Access-Control-Allow-Origin', '*'   res.header 'Access-Control-Allow-Credentials', true   # try: 'POST, GET, PUT, DELETE, OPTIONS'   res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'   # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'   res.header 'Access-Control-Allow-Headers', 'Content-Type'   # ...它似乎不起作用。好像我的瀏覽器(Chrome)沒有發送初始OPTIONS請求。當我剛剛更新資源塊時,我需要將跨源GET請求提交到:app.get "/somethingelse", (req, res) ->   # ...   res.header 'Access-Control-Allow-Origin', '*'   res.header 'Access-Control-Allow-Credentials', true   res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'   res.header 'Access-Control-Allow-Headers', 'Content-Type'   # ...它有效(在Chrome中)。這也適用于Safari。我讀過......在實現CORS的瀏覽器中,每個跨源GET或POST請求前面都有一個OPTIONS請求,用于檢查GET或POST是否正常。所以我的主要問題是,為什么在我的案例中似乎沒有發生這種情況?為什么我的app.options塊沒有被調用?為什么我需要在主app.get塊中設置標題?
查看完整描述

4 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

要回答您的主要問題,如果POST或GET中包含任何非簡單內容或標題,則CORS規范僅要求OPTIONS調用在POST或GET之前。

需要CORS pre-flight請求的內容類型(OPTIONS調用)是除以下內容之外的任何Content-Type :

  1. application/x-www-form-urlencoded

  2. multipart/form-data

  3. text/plain

除上述內容之外的任何其他內容類型都將觸發飛行前請求。

至于標題,除以下內容之外的任何請求標題都會觸發飛行前請求:

  1. Accept

  2. Accept-Language

  3. Content-Language

  4. Content-Type

  5. DPR

  6. Save-Data

  7. Viewport-Width

  8. Width

任何其他請求標頭將觸發飛行前請求。

因此,您可以添加自定義標頭,例如:x-Trigger: CORS,這應該觸發飛行前請求并點擊OPTIONS塊。

請參閱MDN Web API參考 - CORS預檢請求


查看完整回答
反對 回復 2019-05-25
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

我發現最簡單的方法是使用node.js包cors。最簡單的用法是:

var cors = require('cors')var app = express()app.use(cors())

當然,有很多方法可以根據您的需要配置行為; 上面鏈接的頁面顯示了許多示例。


查看完整回答
反對 回復 2019-05-25
  • 4 回答
  • 0 關注
  • 1169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號