2016-04-25 44 views
1

CORS我有一個問題,我想,在Mac上最後更新的鉻。在Chrome的早期版本中能正常工作,而實際上Safari和Firefox的工作太細...與鉻50.0.2661.86在節點

餘米發展與CORS使Node.js應用程序,我已經實現了這種方式:

app.use(function (req, res, next) { 

    res.setHeader('Access-Control-Allow-Origin', '*'); 

    res.setHeader('Access-Control-Allow-Methods', 'GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE'); 

    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Accept, Content-Type, Authorization'); 

    res.setHeader('Access-Control-Allow-Credentials', true); 

    next(); 
}); 

我米,灰燼工作,並請求保存生成一個「正常」 PATCH請求:)

PATCH http://localhost:3000/challenges/id 

的對象,但是,由於鉻的上次更新(50.0.2661.86)我想,當我想要做一個補丁它返回給我一個錯誤:

Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response

你知道這裏有什麼問題嗎?

在此先感謝

回答

0

那麼,Chrome會自動更新到新版本,並且它沒有再次發生。很奇怪的問題,我不知道這裏真的發生了什麼......

感謝所有迴應:)

0

您是如何提出請求的? PATCH全部大寫?它在Firefox中工作嗎? (問,因爲它看起來像你的頭的設置是好的,雖然你可能要檢查的是過是肯定的。)

+0

嗨安妮,謝謝你的回答。更新了問題。 – jos

+0

我無法編輯以前的評論,但是可以在Safari和Firefox中使用。 – jos

+0

請注意'ACA-Origin:*'和'ACA-Credentials:true'不能一起工作,但如果它在Firefox和Safari中運行,那麼這並不是真正的問題。可能只是一個Chrome的bug。 – Anne

0

不知道它是否能解決問題,但嘗試用這種替代next()

if (req.method === 'OPTIONS') { 
    res.status(200); 
    res.end(); 
} 
else { 
    next(); 
} 

也許較新版本的chrome想讓服務器手動處理預檢響應。讓我知道它的反應。

+0

感謝您的回答Matteo,但有相同的結果,不工作.. – jos

+0

非常奇怪的問題.. +1的問題,因爲我也有一個解決方案感興趣。 –

+0

愚蠢的問題:PUT和DELETE請求工作正常? –