[英]sailsjs cors bad request still getting through to controller
所以我的cors.js文件看起來像
module.exports.cors = {
allRoutes: true,
origin: require('./local.js').hosts, // this is 'http://localhost'
}
然后,在這種情況下,我選擇了一個隨機站點來發出請求: http : //tools.pingdom.com/fpt/
這是我在頁面上的要求和回復
$ .post(' http:// localhost:1337 / gift / create ')對象{readyState:1,getResponseHeader:函數,getAllResponseHeaders:函數,setRequestHeader:函數,overrideMimeType:函數…} jquery-2.1.1.min.js :4 POST http:// localhost:1337 / gift / create (索引):1 XMLHttpRequest無法加載http:// localhost:1337 / gift / create 。 “ Access-Control-Allow-Origin”標頭包含無效值“”。 因此,不允許訪問原始站點“ http://tools.pingdom.com ”。
但是,由於仍然調用控制器功能,所以控制台中仍然出現錯誤。
sails> error: Sending 500 ("Server Error") response:
TypeError: Cannot read property 'email' of undefined
我認為cors如果失敗則應該終止連接。
我是否缺少設置?
這是此帖子CORS的重復:飛行前通過,主請求完成,w / 200,但是瀏覽器仍然存在Origin錯誤,但似乎無法解決。 我們知道為什么帖子繼續存在嗎?
這是響應頭
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:
Connection:keep-alive
Content-Length:2
Content-Type:application/json; charset=utf-8
Date:Wed, 28 Jan 2015 15:56:51 GMT
Set-Cookie:sails.sid=s%3A5TJr82PCN-Tas2GrfKkhooEB.IWwc75iQUPRYoR7qWSep6xc%2BSLUkOV0IQe0w63GDYrQ; Path=/; HttpOnly
X-Powered-By:Sails <sailsjs.org>
沒有訪問控制允許來源集。 我可以為此制定政策,但這是Sails中的錯誤嗎?
首先,您應該永遠不會出現500錯誤,因為在使用它們之前,您應該先驗證控制器代碼中的這些字段!
至於盡管您設置了CORS,該請求仍在處理中:您所看到的是預期的行為,但是我很困惑您的困惑。 這是您對CORS和POST請求必須了解的內容:
POST請求只要使用通用的內容類型標頭(例如application/x-www-form-urlencoded
就不會觸發來自瀏覽器的預檢請求 。
這樣做的原因是,長期以來一直允許常規的舊HTML表單自由地POST到其他來源。 當您執行常規jQuery $.post
,它使用相同的內容類型,因此服務器無法將其與常規形式的POST區別開來。 瀏覽器收到空的Access-Control-Allow-Origin
標頭后,說“沒有辦法,Jose”並拒絕顯示響應,但是到那時該船已經航行了,即POST請求已被處理。
如果您不希望Sails處理來自非列入白名單的來源的任何請求,可以將CORS配置中的securityLevel
設置為1
(高)或2
(非常高):
module.exports.cors = {
allRoutes: true,
origin: require('./local.js').hosts, // this is 'http://localhost',
securityLevel: 1
}
這將使Sails對禁止域中的任何請求返回403響應。 high
和very high
之間的區別在於, high
仍將允許來自不同協議的跨域請求(因此您的郵遞員請求將仍然有效),而very high
則將所有內容鎖定得很緊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.