在了解 REST API URI 设计的规则之前,让我们快速过一下我们将要讨论的一些术语。 URI REST API 使用统一资源标识符(URI)来寻址资源。...REST API 设计人员应该创建 URI,将 REST API 的资源模型传达给潜在的客户端开发人员。在这篇文章中,我将尝试为 REST API URsI 引入一套设计规则。...许多 Web 组件和框架将平等对待以下两个 URI: http://api.canvas.com/shapes/ http://api.canvas.com/shapes 然而,URI 中的每个字符都会被计入作为资源的唯一标识...两个不同的 URI 映射到两个不同的资源。如果 URI 不同,那么资源也会不同,反之亦然。因此,REST API 必须生成和传达清晰的 URI,并且不应容忍任何客户端尝试去对一个资源进行模糊的标识。...更多的API可能会将客户端重定向到末尾没有斜杠的 URI 上,(他们也可能会返回 301 - 用于重新定位资源的 “Moved Permanently”)。
在了解REST API URI设计的规则之前,让我们快速浏览一些我们将要讨论的术语。 URIs REST API使用统一资源标识符(URI)来寻址资源。...REST API设计人员应该在考虑将REST API资源模型传达给潜在的客户端开发者的前提下,创造URI。在这篇文章中,我将尝试为REST API URI 引入一套设计规则。...两个不同的URI映射到两个不同的资源。如果URI不同,那么资源也是如此,反之亦然。因此,REST API必须生成和传递精确的URI,不能容忍任何的客户端尝试不精确的资源定位。...有些API碰到这种情况,可能设计为让客户端重定向到相应没有尾斜杠的URI(也有可能会返回301 - 用来资源重定向)。...最后,望大家牢记:你在为你的客户端设计API URI,而不仅仅是为你的数据。
咱们设计的REST API真的nice么?...北京/二手频道/帖子ID 谢特型:http://api.example.com/68dd0-a9d3-11e0-9f1c 不知道什么鬼 本文将分享URI设计的一些原则。...使用“-”提高URI的可读性 目的是使得URI便于理解,用“-”来连接单词 正面case:http://api.example.com/blogs/my-first-post 3....建议URI中的名称使用复数 额,楼主不知道为何会有这么奇怪的建议 正面case:http://api.college.com/students/3248234/courses 负面case:http:/.../api.college.com/student/3248234/course 最后,给后端研发工程师一个建议:清晰优雅的 RESTful API是为调用者编写的,别无脑随意定义一些shit一样的URI
图片来源于网络 大家好,我想分享一下我是如何在某邀请项目中发现一个简单的API授权错误的,该错误影响了数千个子域,并允许我在无需用户干预的情况下使用大量不受保护的功能,从帐户删除到接管甚至于泄漏部分信息...我在使用dirsearch对网站进行扫描的同时,通过浏览academy.target.com对网站的功能做了大致了解,我注意到一个有趣的端点,如:academy.target.com/api/docs此类端点就像是个金矿...,因为它列出了API文档并指定了请求和响应的结构。...在没有任何APItoken或 authorization 头的情况下直接调用端点会导致: ? 该网站似乎未提供任何API,并且我找不到任何生成APItoken的方法,因此我决定稍后再进行检查。...我决定只复制authorization 头并将其包含在对我发现的API端点的调用中。我创建了另一个帐户,并尝试通过api / user / edit的POST请求更改其密码。 ? ?
没有重定向的原因 redirect() 助手函数只能在普通的控制器方法中被 return 才能跳转 通过查看基础控制器, 可发现 initialize() 方法只是在构造方法中被调用, 被没有 return...返回 站长源码网 并且构造方法中的 return 是没有意义的 /** * 构造方法 * @access public * @param App $app 应用对象 */ public function...解决方案 在继承的基础控制器中新增自定义重定向方法 /** * 解决基础控制器初始化中无法重定向问题 * * @param ......$args)); } 在继承基础控制器类中重写初始化方法, 在初始化方法中执行重定向 protected function initialize() { $this->redirect('/addmin
第一种:rewrite 按照常规理解,实现重定向就是要用rewrite来实现,例如demo: ?...当访问test.cc/uri,如果uri资源在项目中不存在,就会重定向 http://www.yuhaiwei.net/blog/Api_element 网页。...但是使用rewrite重定向,浏览器链接是会发生变化的。 第二种:反向代理 有些场景需要内容重定向到另外一个url, 但是链接保持不变,这时候就可以利用反向代理配置来达到目的。 ?...但是需要注意这样针对具体项目可能会有不同的细节问题,比如这个demo中http://test.cc/blog/Api_element网页里会用到相同域名下的静态资源,静态资源会因为上述重定向而无效,可以通过更细分的...location或者结合if来实现针对不同规则的uri来实现不同方式的重定向,这里不详谈。
/ 一个着眼于未来的企业 Spotify的业务建立在出色的的内容交付之上。...但是,用于其他内容的CDN操作都变得低效,有些内容直接从AWS S3或谷歌云存储等存储桶中流式传输生成。开发人员只是简单地使得存储桶可读并将URI放入他们的代码中之后就可以继续了。...基于Spotify的精神,我们需要定制CDN功能来处理错误和重定向以及令牌识别等任务。...请求CDN审核的自助服务工具 我们开发了一个SquadCDN来提供内部部署前的审查服务,在这里就使用到了Fastly的API和VCL。...注意API调用限制。即使有很高的限制,一次调用太多的API也会导致部署失败。仔细规划API调用将有助于确保一切服务顺利运行。 验证所有的事情。
由于他们使用了多个重定向URL。但是,要在Facebook中找到一个漏洞并拥有最有才能的安全研究人员,似乎并非易事。要在Facebook OAuth中找到错误,这是非常艰巨和挑战性的。...例如Instagram,Oculus,Netflix,Tinder,Spotify等。...在后台,SDK在初始化时会创建用于跨域通信的代理iframe。代理帧通过postMessage()API 发送回令牌,代码或未经授权的未知状态。...在这一点上,我们需要一个代理框架,该框架可以(劫持)为我们完成这项工作,例如API和任何来源“location.hash”的postMessage()API “*”。...(仅接受绝对文件路径"xd_arbiter.php") 专用于xd_arbiter的所有重定向HTTP状态均被阻止。
redirect_uri(可能需要) 如果重定向 URI 包含在初始授权请求中,则服务也必须在令牌请求中要求它。令牌请求中的重定向 URI 必须与生成授权代码时使用的重定向 URI 完全匹配。...然后,该服务必须验证请求中提供的授权码是否已发给已识别的客户端。最后,服务必须确保存在的重定向 URI 参数与用于请求授权代码的重定向 URI 相匹配。...不成功的响应 如果访问令牌请求无效,例如重定向 URL 与授权期间使用的不匹配,则服务器需要返回错误响应。...invalid_grant– 授权代码(或密码授予类型的用户密码)无效或已过期。如果授权授予中提供的重定向 URL 与此访问令牌请求中提供的 URL 不匹配,这也是您将返回的错误。...参数error_description只能是ASCII字符,最多只能是一两句话描述错误的情况。这error_uri是链接到您的 API 文档以获取有关如何更正遇到的特定错误的信息的好地方。
钓鱼邮件伪装成Spotify官方,发起授权申请,这个类似网络钓鱼。 ? 用户点击链接后,跳转到LIVE进行授权许可(当然,你保持一定的警惕的话,应该不会上当)。...accessToken 5、使用accessToken以API请求的方式获取所有资源 下面就是详细的步骤了。...二、创建一个申请授权的链接(SCOPE) 为了获取权限,用户会被url重定向至Microsoft,该url要包含如下格式数据: GET https://login.microsoftonline.com...最后发出去的邮件是下面这样子的。 ? 用户收到这封邮件后,如果他点击了链接,用户就会被重定向到授权页面。 ?...redirect_uri。
Asp.Net Core API 需要认证时发生重定向的解决方法 使用 .Net Core 开发 API 时, 有些 API 是需要认证, 添加了 [Authorize] 标记, 代码如下所示: [Route...("api/[controller]")] [ApiController] public class AccountController : Controller { [HttpGet("info...HTTP 状态码, 但是在添加了 Identity 认证之后, 返回结果变成了 302 (重定向)。...对于浏览器来说, 重定向是正确的, 而 Ajax 请求则会自动继续请求重定向之后的地址, 因此必须解决掉返回重定向的问题。...API 就不会有重定向结果返回了。
如果要求完全重定向URI的注册是不可能的,授权服务器应该要求URI scheme, authority, and path的注册(允许客户端动态的改变重定向URI的查询组)。...当一个重定向的URI被包含在授权请求中时,授权服务器必须跟以注册的客户端重定向URI作比较和匹配,如果没有就跟客户端本身的URL作比较。 ...3.1.2.2 无效端点(Invalid Endpoint) 如果由于授权请求参数缺失,无效,或者不能匹配无效的URI,授权服务器应该告知一个错误给资源所有者。 ...4.1.2.1 错误响应(Error Response) 如果由于缺失、无效、不匹配重定向URI和客户端标识符,授权服务器应该通知资源所有者错误,不能自动的重定向用户代理到无效的重定向...4.2.2.1 错误响应(Error Response) 如果由于缺失、无效、不匹配重定向URI和客户端标识符,授权服务器应该通知资源所有者错误,不能自动的重定向用户代理到无效的重定向
OAuth2客户端是需要访问API的应用程序,授权服务器负责验证并授予OAuth2客户端的访问令牌。...在这里,您可以创建一个新的OAuth2客户端,指定其名称、ID、秘密和回调URI。在这里,回调URI是客户端接收访问令牌的URI。一旦您创建了OAuth2客户端,您就需要创建授权服务器。...是OAuth2客户端的ID,redirect_uri是OAuth2客户端的回调URI,scope是授权范围。...用户将被重定向到授权服务器的登录页面,要求其输入其凭据并授予请求的授权。如果用户授予请求的授权,授权服务器将向用户返回授权码,该授权码可以在下一步中用于获取访问令牌。...如果访问令牌无效,则引发AuthenticationFailed异常。
它需要足够快,并能处理一定量的流量 我当前的设计会缓存有效的 URL 重定向,因此对于对同一令牌的请求,系统不会每次都查询数据库。 如何处理无效的令牌或有效但不存在的 URL?...对于无效令牌,停止请求。对于该有效的令牌,但它指向不存在的 URL(数据库中没有记录),将用户重定向到预先设置的默认 URL。...其他 URL (如"/abc"、"123") 也被视为无效 URL,不会执行重定向。 对于可能包含恶意代码的互联网 URL,目前不在设计范围中。但是,也许将来我们可以集成第三方服务来识别链接。...IUrlHelper 接口执行前两个无效情况的验证。...例如为第三方提供 REST API、为管理链接添加Tag、甚至在ASP.NET Core 3.0 发布后使用 Blazor。
通过在查询字符串中使用附加参数重定向回提供的重定向 URL 来指示错误。总会有一个错误参数,重定向也可能包括error_description和error_uri。...重定向网址无效 如果提供的重定向 URL 无效,授权服务器将不会重定向到它。相反,它可能会向用户显示一条描述问题的消息。...参数无效 如果一个或多个参数无效,例如缺少所需的值或参数response_type错误,服务器将重定向到重定向 URL 并包括描述问题的查询字符串参数。...invalid_scope: 请求的范围无效、未知或格式错误。 server_error: 授权服务器遇到意外情况,无法满足请求。...此外,服务器可能包括参数error_description和error_uri有关错误的附加信息。
重定向URI或回调URL(callback_url) 重定向URI是授权方服务在用户授权(或拒绝)应用程序之后重定向供用户访问的地址,因此也是用于处理授权码或访问令牌的应用程序的一部分。...需要精确地设置成从客户端接收到的值。 错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外的其它原因而导致请求失败, error_description 可选参数。...错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外的其它原因而导致请求失败, error 错误码 invalid_request 请求缺少某个必需参数,包含一个不支持的参数或参数值...invalid_grant 提供的访问许可是无效的、过期的或已撤销的(例如,无效的断言,过期的授权令牌,错误的终端用户密码证书,或者不匹配的授权码和重定向URI)。...错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外的其它原因而导致请求失败, error_description 可选参数。
在浏览器请求网页或API请求数据时常见此状态码。简单来说,它告诉客户端:“你的请求已经成功处理,并且所请求的资源在消息体中。” 201 Created 该请求已成功,并因此创建了一个新的资源。...这是一种重定向状态码,用于告知客户端资源的新位置。 302 Found 临时移动,表示请求的资源临时移动到了一个不同的URI,与301不同的是,302表示这种重定向只是暂时的。...303 See Other 查看其它地址,将客户端重定向到不同的URI,这是对原始请求的响应,但响应本身位于另一个URI。...非常相似,都用于表示资源临时性的重定向到另一个URI。...502 Bad Gateway 服务器作为网关或代理,从上游服务器收到无效响应。502错误表明你正在访问的服务器是一个网关或代理服务器,而它在处理请求时从上游服务器或辅助服务器接收到了无效的响应。
client_id– 请求此代码的客户端 ID(或其他客户端标识符) redirect_uri– 使用的重定向 URL。...如果请求的语法有问题,例如redirect_uriorclient_id无效,那么重要的是不要重定向用户,而应该直接显示错误消息。这是为了避免让您的授权服务器被用作开放式重定向器。...如果redirect_uri和client_id都有效,但仍然存在其他问题,则可以将用户重定向回查询字符串中有错误的重定向 URI。...当重定向回应用程序以指示错误时,服务器将以下参数添加到重定向 URL: error 以下列表中的单个 ASCII 错误代码: invalid_request– 请求缺少参数、包含无效参数、多次包含参数或无效...invalid_scope– 请求的范围无效或未知。 server_error– 服务器可以使用此错误代码重定向,而不是向用户显示 500 Internal Server Error 页面。
HTTP 状态代码或响应码共分为五类,分别是 1×× 提示信息,2×× 成功,3×× 重定向,4×× 客户端错误,5×× 服务器错误。 本文包含了完整的 HTTP 状态码以及相应的描述信息。...当我们进行 API 测试时,通常首先会检查 API 调用返回的响应的状态码。这就要求我们必须熟悉那些最常见的 HTTP 状态码,以便我们能够更快地识别问题。...301-永久移动,状态代码指示目标资源已分配了一个新的永久 URI,并且将来对该资源的任何引用都应使用其中一个封闭的 URI。 302-找到,状态代码指示目标资源暂时驻留在不同的 uri 下。...304-未修改 300-多种选择 303-参见其他 305-使用代理 307-临时重定向 308-永久重定向 4×× 客户端错误 4xx(客户端错误)类状态代码表示客户端似乎出错了。...502 坏网关 502(坏网关)状态代码表示服务器在充当网关或代理时,在尝试完成请求时从其访问的入站服务器接收到无效响应。
(C)假设用户给予授权,认证服务器将用户导向客户端事先指定的”重定向URI”(redirection URI),同时附上一个授权码。...(D)客户端收到授权码,附上早先的”重定向URI”,向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。...(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token) 微信登录的官方文档将微信登录分为3个步骤: 第一步.请求...如果access_token无效,服务端向微信开放平台发送刷新access_token的请求如下: access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时...private void refreshAccessToken() { String uri = "https://api.weixin.qq.com/sns/oauth2/refresh_token?
领取专属 10元无门槛券
手把手带您无忧上云