ajv-validator/ajv

$ref does not resolve reference to $id when domain name within $id contains capital letters

開放

#1,068 建立於 2019年8月19日

 (3 則留言) (0 個反應) (0 位負責人)TypeScript (897 個分叉)batch import
bug reportenhancementhelp wanted

倉庫指標

星標
 (12,984 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

What version of Ajv are you using? Does the issue happen if you use the latest version? Happens with latest Version: 6.10.2

Ajv options object None

JSON Schema A

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://Test.com/Schemas/testSchema.json",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "test": {
      "type": "string"
    }
  }
}

JSON Schema B that references Schema A

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://Test.com/Schemas/testReference.json",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "testReference": {
      "$ref": "http://Test.com/Schemas/testSchema.json"
    }
  } 
}

Your code

...
const ajv = new Ajv({});
ajv.addSchema(schemaA);
const valid = ajv.validate(schemaB, data);
...

Validation result, data AFTER validation, error messages

can't resolve reference http://Test.com/Schemas/testSchema.json from id https://test.com/Schemas/testReference.json#

If the $id of schema is "http://Test.com/Schemas/testSchema.json", there is no possible valid reference to this $id. Neither "$ref": "http://Test.com/Schemas/testSchema.json" nor "http://test.com/Schemas/testSchema.json" does work. Both return "can't resolve reference ...".

What results did you expect? No Error. As the Domainname should not be case sensitive, any Definition and any Reference should work with any capital Letter.

Are you going to resolve the issue? No

貢獻者指南