Tag: 表达了

如何使用Express返回格式良好的201?

我正在尝试使用DS.RESTAdapter构建带有ember-cli的DS.RESTAdapter并表达模拟调用。 我得到的问题是,当我尝试保存新的待办事项时,我在控制台中看到了这个错误: SyntaxError: Unexpected end of input at Object.parse (native) at jQuery.parseJSON (http://localhost:4200/assets/vendor.js:8717:22) at ajaxConvert (http://localhost:4200/assets/vendor.js:9043:19) at done (http://localhost:4200/assets/vendor.js:9461:15) at XMLHttpRequest.jQuery.ajaxTransport.send.callback (http://localhost:4200/assets/vendor.js:9915:8) 我很确定问题是当我在新创建的模型上调用save()时,它正在发送一个post请求给/ express表示回复: todosRouter.post(‘/’, function(req, res) { res.status(201).end(); }); 这是在Ember中创建todo的创建动作: actions: createTodo: -> return unless title = @get(‘newTitle’)?.trim() @set(‘newTitle’, ”) @store.createRecord(‘todo’, title: title isCompleted: false ).save() 任何帮助将不胜感激。 我是新来表达并且不确定为什么jquery不喜欢它返回的201。

Angular $ http.delete CORS错误(预检请求)

我有一个Angular应用程序(v1.13.15)和Express.js(v4.12.4)作为后端。 我的后端有一个DELETE方法,我已经为它启用了CORS支持。 但是,当我使用Angular $ http.delete时,我遇到了这个错误 请求的资源上不存在“Access-Control-Allow-Origin”标头。 我已经尝试过使用Jquery,$ .ajax()调用它,我也遇到了同样的问题! 我也尝试使用POSTMAN来执行DELETE请求,没有问题。 但是,我使用Angular访问我的GET和POST方法没有问题。 我可以知道这是什么问题吗? 我的后端URL http:// localhost:3000 我使用gulp-webserver http:// localhost:8000为我的AngularJS提供服务 我的服务器代码 exports.deleteGPSData = (req, res, next) => { res.header(‘Access-Control-Allow-Origin’, ‘*’); res.header(‘Access-Control-Allow-Methods’, ‘GET, POST, OPTIONS, PUT, PATCH, DELETE’); res.header(‘Access-Control-Allow-Headers’, ‘X-Requested-With,content-type’); let id = req.params.id; res.send(‘here’); } 和我的角色代码 $http.delete(API_URL + ‘/gps/’ + id) .success(function(res) { if (res.result !== 1) { […]

使用带有Node和Express的IE10中的CORS的安全性错误

我正在构建一个托管在http://example.com上的Backbone应用程序,该应用程序使用https://api.example.com托管的API。 对于API,我使用带有Express.js框架的Node.js。 我的CORS解决方案似乎适用于除IE以外的每个主要浏览器(它甚至在IE10中失败)。 当从IE10发起请求时,请求永远不会到达API服务器。 据我所知,该请求甚至没有被发送。 当我使用IE10的开发人员工具检查请求时,请求标头和响应标头都是空白的。 当从任何其他浏览器发送请求时,将收到请求并正确生成响应。 这是我在控制台中看到的错误: SCRIPT 7002: XMLHttpRequest: Network Error 0x4c7, The operation was canceled by the user. 该请求使用jQuery: $.ajax({ url: apiRoot + “/endpoint”, success: function(response) { // Omitted irrelevant code } }); 根据这篇文章,默认情况下在IE中禁用CORS并且必须启用CORS: Internet Explorer忽略Access-Control-Allow标头,默认情况下禁止Internet区域的跨域访问。 要启用CORS,请转到工具 – > Internet选项 – >安全选项卡,单击“自定义级别”按钮。 找到其他 – >跨域访问数据源设置,然后选择“启用”选项。 果然,当我启用此设置时,请求会通过,一切正常。 但是,我已经读过这个设置实际上与CORS无关, 不应该影响它。 当使用此工具测试CORS兼容性时,无论是启用还是禁用此设置,IE10都会通过,这使我相信CORS 已启用,我只是做错了。 此外,当我运行Fiddler时,一切似乎都应该起作用,因为Fiddler充当代理人。 作为参考,这是服务器端的CORS相关代码: […]