[英]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.