繁体   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