Tag: rest

ASP.NET Web API身份validation选项

有哪些选项可用于对来自其他域的JQuery应用程序使用的MVC3 Web API应用程序进行身份validation? 这是迄今为止我尝试过的约束/事情: – 我不想使用OAuth; 对于用户群有限的私有应用程序,我不能指望最终用户在现有提供商上拥有自己的帐户,并且无法实现自己的帐户 我有一个function齐全的HMAC-SHA256实现,可以正常使用标头中传递的数据; 但这在IE中不起作用,因为IE8 / 9中的CORS已损坏,并且不允许您发送标头 我需要跨域,因为消费应用程序在API的不同域上,但不能使用jsonp,因为它不允许您使用标头 我想避免使用基于令牌(仅)的方法,因为这可以重播并通过状态来违反REST 此时我已经退回到HMAC-SHA256方法,该方法使用URL或查询字符串/ post来提供哈希和其他变量。 将这些变量放在URL中似乎很脏,将它们放在查询字符串/post中是一件痛苦的事。 我成功地使用了JQuery $ .ajaxSetup beforeSend选项来生成哈希并将其附加到标题,但正如我所提到的,你不能使用IE8 / 9的标题。 现在我不得不求助$ .ajaxPrefilter,因为我无法更改beforeSend中的ajax数据,并且不能只扩展$ .ajaxSetup中的数据,因为我需要根据ajax的类型动态计算散列值查询。 $ .ajaxPrefilter也是一个问题,因为没有干净/简单的方法以方法无关的方式添加所需的变量…即它必须是GET的查询字符串和POST的formdata 我必须遗漏一些东西,因为我找不到一个解决方案: – a)支持跨域a)不是MVC和JQuery方面的大规模黑客攻击c)实际上安全d)适用于IE8 / 9 必须有人在那里正确地做这件事…… 编辑 为了澄清,API方面的身份validation机制很好……无论我validation请求的哪种方式,我生成一个GenericPrincipal并在API中使用它(这个的优点是另一个post,但它确实允许我使用MVC中的标准授权机制,我更倾向于自己编写…而不是我的API上的其他开发人员学习和维护 问题主要在于将身份validation信息从客户端传输到API: – – 它不能依赖于服务器/ API状态。 所以我不能在一次调用中传递用户名/密码,获得一个令牌然后继续使用该令牌(打开重放攻击) – 任何需要使用请求头的东西都没有,因为IE使用XDR而不是XHR浏览器,它不支持自定义标头(我知道IE10支持XHR,但实际上我需要IE8 +支持) – 我想我已经卡住生成一个HMAC并将其传递到URL某处(路径或查询字符串)但这个看起来像是一个黑客,因为我正在使用不是为此设计的请求的部分 – 如果我使用路径有很多杂乱的解析,因为至少我必须传递用户名,时间戳和哈希与每个请求; 这些需要以某种方式分隔,我几乎无法控制在其余url中使用的分隔符 – 如果我使用数据(querystring / formdata)我需要更改我发送validation详细信息的位置,具体取决于我的方法使用(用于POST / PUT […]

以编程方式查看客户端浏览器是否支持PUT / DELETE方法

有没有办法看看客户端浏览器是否支持PUT或SEARCH方法用于JQuery和AJAX请求? HTML5 PUT / DELETE方法在Chrome中不起作用? 大多数Web浏览器中是否提供PUT,DELETE,HEAD等方法? 我有以下代码,并且PUT在Chromium和Chrome中没有出现在服务器端…我想知道,如果浏览器不支持PUT,如何将其更改为POST请求。 ..为了向后兼容 function do_data(url, action, query) { try { if ($.browser.msie) { var xdr = new XDomainRequest(); if (query !== null) { console.log(query); xdr.open(action, url + ‘?’ + $.param(query)); } else { xdr.open(action, url); } xdr.onload = function() { var data = $.parseJSON(this.responseText); show_data(data); }; xdr.send(); } else { […]

401 Unauthorized通过Ajax对lalavel中的RESTful API发出DELETE请求

我使用laravel控制器创建了一个非常好的 API。 我有一个PhotosController ,它有一个用于删除资源的destroy($id)方法。 我也有一段javascript代码向我的应用程序发送DELETE请求。 结果应该是删除带有$id id的照片。 但是laravel没有将我的请求路由到destroy方法。 相反,它发送401 Unauthorized错误。 问题是我想通过Ajax向我的应用程序发送DELETE请求,但是laravel不允许我的请求被路由! routes.php文件: Route::resource(‘photos’, ‘PhotosController’); 破坏方法: public function destroy($id) { try{ unlink($_SERVER[“DOCUMENT_ROOT”].’/uploads/doctors/’ . $id); Session::forget(‘photo’); $msg = Notification::where(‘flag’, ‘s’)->where(‘code’, ‘user-update-delete-photo-gallery’)->first()->msg; return Response::json(array(‘success’ => $msg)); }catch (Exception $e){ App::abort(500, $e->getMessage()); } } 我的Ajax请求: $.ajax( { url: “/photos/” + name, method : “DELETE”, // Or POST : result […]

jQuery AJAX在PUT和DELETE的现代浏览器中工作吗?

jQuery AJAX调用有一个type参数,允许指定异步调用的方法( GET / POST / PUT / DELETE ); 文件说明: 要求的类型(“POST”或“GET”),默认为“GET”。 注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE, 但并非所有浏览器都支持它们。 这对现代浏览器意味着什么? 我可以依靠jQuery AJAX来完成RESTful调用,它依赖于PUT和DELETE动词吗?

Backbone:从服务器获取集合

我正在尝试从我的服务器获取一个集合。 我正在使用版本0.3.3(不是github的主人)但是我在这个例外中运行: Uncaught TypeError: Cannot use ‘in’ operator to search for ‘id’ in {id=MyId, active=true} jQuery.jQuery.extend._Deferred.deferred.resolveWith (jquery.js:869) done (jquery.js:6591) jQuery.ajaxTransport.send.callback 这是我创建错误的方式: var MyModel = Backbone.Model.extend(); var MyCollection = Backbone.Collection.extend({ url: ‘/api/collection’, model: MyModel }); var coll = new MyCollection(); coll.fetch(); / api / collection中的元素在JSON中解析。 我试图以各种格式返回它们 [“Id1”, “Id2”, … ] [{id: “Id1, somethingElse: “…”}, …] {id1: […]

Drupal通过Rest服务器登录

我正在开发一个使用外部Drupal来处理文章和页面的网站。 目的是仅使用html / css / js在网站中显示文章。 我已经向drupal后端添加了一个Rest Server模块,因此我可以执行http请求来检索文章。 现在从drupal后端工作中检索文章(参见下面的代码)。 Restdrupal是我的站点的名称,restendpoint是Rest服务器端点的名称(Captian Obvious) $.ajax({ url : “http://127.0.0.1/restdrupal/restendpoint/node.json”, dataType : ‘json’, success : function(data) { //further code } }); 现在我希望我的客户能够添加一些文章,所以我需要先登录。 我已经在互联网上搜索了几天,尝试了一百万件事,但对我来说没有任何作用。 我尝试过的最新function(使用jQuery)是这样的: $.ajax({ url : “http://127.0.0.1/restdrupal/restendpoint/user/login”, dataType:’application/json’, type : ‘PUT’, data : ‘Name=myusername&Pass=mypassword’, success : function(data) { //further code }, error:function(data){ //Error handling } }); 我也把PUT变成了POST … 我得到的反应是(不管我做什么)相同: […]

当基本auth用户名有@符号(ios / cordova)时,Jquery .ajax失败

我有一个带jQuery 1.9.1的phonegap应用程序,只要用户名中没有“@”符号(比如在电子邮件地址中),工作得很好。 它只在iOS上失败。 我怀疑它可能不会对@符号或其他东西进行urlencoding。 iPhone , 它永远不会遇到任何回调(完成,失败或总是),Wireshark显示请求没有到达服务器 。 Chrome桌面 :运行正常。 Android ,运行正常。 $.ajax({ url: “https://” + this.hostname + “/alertusmw/services/rest/” + endPoint, type: method, dataType: ‘json’, contentType: ‘application/com.alertus-v1.0+json’, cache:false, username: this.username, password: this.password, beforeSend: function (xhr) { xhr.setRequestHeader(“Authorization”, “Basic ” + $.base64.encode(this.username + “:” + this.password)); }, data: options.data }).done(function(response) { console.log(“DONE: ” + method + […]

拒绝使用ajax调用Rest服务器设置不安全的标头“Cookie”

我忙着构建一个与我的Drupalrest服务器连接的Phonegap应用程序(模块:服务)。 我的Drupal网站(PHP)有代码:header(’Access-Control-Allow-Origin:*’); 当我尝试使用以下代码连接到我的Rest服务器时: http : //pastebin.com/xfygQexn我收到以下控制台消息:拒绝设置不安全的标头“Cookie” 代码: http ://pastebin.com/FNGgPQKv错误:拒绝设置不安全的标题“Cookie” 有人熟悉这个问题吗? 非常感谢。 我需要令牌和会话进行注销呼叫。

不同浏览器中日期值的JSON.stringify差异

我在HTML页面中有这个代码: alert(JSON.stringify(new Date())); 我在我的页面中包含了最新的json2.js (2009-09-29版本),以支持没有JSON.stringify()的旧浏览器。 我还包括jquery-1.3.2.js。 我相信具有原生JSON支持的新浏览器,它只是传递给本机JSONfunction。 这是我在不同浏览器中得到的结果: IE 8 on Windows XP: “2010-02-07T21:39:32Z” Chrome 4.0 on Windows XP: “2010-02-07T21:39:59Z” Firefox 3.0 of Windows XP: “2010-02-07T21:40:41Z” Chrome 4.0 on Ubuntu linux: “2010-02-07T21:41:49Z” Firefox 3.0 on Ubuntu linux: “2010-02-07T21:42:44Z” Chrome 4.0 on Mac OSX: “2010-02-07T21:43:56Z” Safari on Mac OSX: “2010-02-07T21:45:21Z” Firefox 3.5 on Mac OSX: “2010-02-07T21:44:10.101Z” […]

为什么我的jQuery按钮处理程序没有被触发?

我有这个jQuery来响应被点击的按钮并调用REST方法: $(document).ready(function() { $(“#btnGetData”).click(function() { alert(“The button was clicked.”); var unitval = _unit; var begdateval = _beginDate; var enddateval = _endDate; var model = JSON.stringify({ unit: unitval, begdate: begdateval, enddate: enddateval }); $.ajax({ type: ‘GET’, url: ‘@Url.Action(“GetQuadrantData”, “LandingPage”)’, data: { unit: unitval, begdate: begdateval, enddate: enddateval}, contentType: ‘application/json’, cache: false, success: function (returneddata) { }, […]