nodeSolidServer / nodeSolidServer/node-solid-server

500 error on read public document - NamedNode IRI "null" must be absolute.

未关闭
#1,640 11 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
JavaScript
星标
1.8k
派生
308
PR 合并指标
30 天内没有已合并 PR

描述

A strange obug. When the document is read by a webapp it gets a 500 error, but a simple curl gives 200.

$ curl -I https://solidos.solidcommunity.net/public/2021/10_example_data/example.ttl
HTTP/1.1 200 OK
X-Powered-By: solid-server/5.6.16
Vary: Accept, Authorization, Origin
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Authorization, User, Location, Link, Vary, Last-Modified, ETag, Accept-Patch, Accept-Post, Updates-Via, Allow, WAC-Allow, Content-Length, WWW-Authenticate, MS-Author-Via, X-Powered-By
Allow: OPTIONS, HEAD, GET, PATCH, POST, PUT, DELETE
Link: <example.ttl.acl>; rel="acl", <example.ttl.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Resource>; rel="type"
WAC-Allow: user="read write append",public="read write append"
MS-Author-Via: SPARQL
Updates-Via: wss://solidos.solidcommunity.net
Content-Type: text/turtle; charset=utf-8
Content-Length: 2
ETag: W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc"
Date: Tue, 16 Nov 2021 23:45:39 GMT
Connection: keep-alive
Keep-Alive: timeout=5

but the same URI when fetched by mashlib gives 500

HTTP/1.1 500 Internal Server Error
X-Powered-By: solid-server/5.6.16
Access-Control-Allow-Origin: null
Vary: Accept, Authorization, Origin
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Authorization, User, Location, Link, Vary, Last-Modified, ETag, Accept-Patch, Accept-Post, Updates-Via, Allow, WAC-Allow, Content-Length, WWW-Authenticate, MS-Author-Via, X-Powered-By
Allow: OPTIONS, HEAD, GET, PATCH, POST, PUT, DELETE
Link: <example.ttl.acl>; rel="acl", <example.ttl.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Resource>; rel="type"
Content-Type: text/plain; charset=utf-8
Content-Length: 39
ETag: W/"27-AVbkXABETaBBBb89giO49PTSQHQ"
Date: Tue, 16 Nov 2021 23:52:01 GMT
Connection: keep-alive
Keep-Alive: timeout=5

where it looks ss though the server log may look something like


0|solid  | 2021-11-16T23:32:33.227Z solid:server Error page because of: Error: NamedNode IRI "null" must be absolute.
0|solid  |     at new NamedNode (/Users/timbl/src/github.com/solid/node-solid-server/node_modules/rdflib/lib/named-node.js:64:13)
0|solid  |     at Object.namedNode (/Users/timbl/src/github.com/solid/node-solid-server/node_modules/rdflib/lib/factories/canonical-data-factory.js:150:12)
0|solid  |     at new ACLChecker (/Users/timbl/src/github.com/solid/node-solid-server/lib/acl-checker.js:31:74)
0|solid  |     at Function.createFromLDPAndRequest (/Users/timbl/src/github.com/solid/node-solid-server/lib/acl-checker.js:189:12)
0|solid  |     at allowHandler (/Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:47:21)
0|solid  | /Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:78
0|solid  |     const error = req.authError || await req.acl.getError(userId, mode)
0|solid  |                                                  ^
0|solid  | TypeError: Cannot read properties of undefined (reading 'getError')
0|solid  |     at allowHandler (/Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:78:50)

and the httop response body is

NamedNode IRI "null" must be absolute.

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

复现 curl 请求与 mashlib webapp 请求之间的差异,然后检查第 31 行和第 189 行附近的 lib/acl-checker.js,以及第 47 行和第 78 行附近的 lib/handlers/allow.js。追踪 webapp 路径产生 null NamedNode 的原因,并验证读取公共文档不再返回 500 错误。

由索引模型根据 Issue 内容生成。

评估

技术栈
javascript
领域
authorization, backend
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。