@aglyn/ shared- util- http
获取 API 和 Next.js 请求处理器的小型 HTTP 帮助器: CORS 、 请求头、 ID- token cookie、 同源重定向检查、 URL 方案允许列表和认证 fetch它主要是Aglyn大型包件的附属物(Aglyn包件)@aglyn/aglyn,插件,租户运行时间),可以自行使用.
从Aglyn monorepo出版到npm. 随后的版本 语义版本。 。 。 .
安装
npm install @aglyn/shared-util-http
同伴依赖 : next (单位:千美元)16.3.3),可选. 使用取 Next.js 对象的助手(NextRequest, (中文(简体) ), NextResponse, (中文(简体) ), NextApiRequest比如饼干帮手 下面的子路径模块只使用网络标准.
里面有什么东西
从软件包根 :
- 科斯特尔:
corsHandleResponse(req, res, options?)财务报告和审定财务报表corsBuildResponseHandler(options?),可重复使用的配置。 逐项拒绝:没有origin选项.credentials从不与*源代码。 飞行前OPTIONS除非preflightContinue已经设定。 下层部件 :getOriginHeaders, (中文(简体) ),getOriginHeadersFromRequest, (中文(简体) ),getAllowedHeaders, (中文(简体) ),isOriginAllowed。 。 。 . getRequestHeader(request, name)- 阅读一个标题 从任何一个获取Request或一个NextApiRequest。 。 。 .getAbsoluteUrl(path, request?)- 从host页眉( 服务器) 或window.location(浏览器).cookieGetUserIdToken(request)编号 :cookieSetUserIdToken(request, response, token, options?)- 读和写用户 ID -token cookie,httpOnly默认.- 类型 :
CorsOptions, (中文(简体) ),StaticOrigin, (中文(简体) ),OriginFn。 。 。 .
仅通过子路径(不从根再出):
@aglyn/shared-util-http/safe-redirect- 说吧isSameOriginPath(candidate)财务报告和审定财务报表safeSameOriginPath(candidate, fallback = '/')。它们不匹配字符串的图案,而是用URL解析器与探针源进行解析,只有在源头不变的情况下才接受,源头捕获//host, (中文(简体) ),/\host,以及标签或新线的花招.@aglyn/shared-util-http/safe-url-scheme- 说吧hasSafeLinkScheme(value)(单位:千美元)http, (中文(简体) ),https, (中文(简体) ),mailto, (中文(简体) ),tel, (中文(简体) ),sms,或没有计划)和hasSafeMediaScheme(value)(单位:千美元)http, (中文(简体) ),https,或者没有计划。 他们只检查方案;之后你仍须从值中逃入属性中.@aglyn/shared-util-http/bounded-await- 说吧boundedAwait(work, ms, fallback, label)财务报告和审定财务报表createSettledValueCache()。第一个答案是work'结果,或与fallback一次ms已经通过,使用实时计时器,而不是信任中止信号;work可能是一个函数AbortSignal在截止日期终止。 获胜的最后期限写一个结构化console.warn每个标签一分钟。 第二个是 TTL 缓存,它持有已结算的值并拒绝承诺,有一个readThrough(key, load, ttlFor)只能储存一次load已经解决.@aglyn/shared-util-http/authorized-token- 说吧resolveIdToken(user, options?), (中文(简体) ),authorizedFetch(user, input, init?, options?), (中文(简体) ),describeCallFailure(error, fallback), (中文(简体) ),AuthorizationUnavailableError, (中文(简体) ),ID_TOKEN_TIMEOUT_MS。 。 。 .user任何与一个getIdToken()方法。 等待的标志有期限, 当没有标志的时候authorizedFetch什么都不给,我下定决心401- 有原因的形状反应.
使用量
import { corsBuildResponseHandler } from '@aglyn/shared-util-http'
import { safeSameOriginPath } from '@aglyn/shared-util-http/safe-redirect'
const cors = corsBuildResponseHandler({
origin: ['https://app.example.com'],
credentials: true,
})
export async function GET(req: Request) {
return cors(req, Response.json({ ok: true }))
}
// Anything that would leave the origin becomes '/'.
const next = safeSameOriginPath(new URL(location.href).searchParams.get('next'))
怎样才合适
A 类 shared 软件包:通用,对Aglyn的模型一无所知。 共享软件包只能导入其他共享软件包; 此软件包取决于 @aglyn/shared-data-enums (HTTP状态代码和饼干键). @aglyn/shared-util-next, (中文(简体) ), @aglyn/shared-util-rest-api, (中文(简体) ), @aglyn/shared-util-email, (中文(简体) ), @aglyn/aglyn,租户运行时间包和大多数插件都依赖于它.
许可证
阿帕奇2.0 (英语). 资料来源: https://github.com/aglyn/aglyn/tree/main/libs/shared/util/http. 中国植物物种信息数据库