簡體   English   中英

sailsjs cors錯誤的請求仍然通過控制器

[英]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響應。 highvery high之間的區別在於, high仍將允許來自不同協議的跨域請求(因此您的郵遞員請求將仍然有效),而very high則將所有內容鎖定得很緊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM