app_id: bGDlss1xXtSR3b1TJSKQjaEf-gzGzoHsz
SDK 版本: "LeanCloud-JS-SDK/4.5.3 (Browser)"

在本地开发使用JavaScript SDK 测试注册了三十余个用户后,开始出现CORS错误。其他的API请求(登录,其他class信息更新)均正常。

报错信息
Access to XMLHttpRequest at 'http://api.munshare.com/1.1/users?' from origin 'http://localhost:8082' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

SDK debug 输出信息

用户注册代码

return new Promise((resolve, reject) => {
        var user = new db.User()
        user.setUsername(payload.email)
        user.setEmail(payload.email)
        user.setPassword(payload.password)
        user.signUp()
        .then(resp => {
          var roleQuery = new db.Query(db.Role)
          roleQuery.equalTo('name', 'person').find()
          .then(results => {
            var personRole = results[0]
            personRole.getUsers().add(db.User.current())
            personRole.save()
            .then(resp => console.log(resp))
            .catch(err => console.log(err))
          }
          )
          resolve(resp)
        })
        .catch(err => {
          reject(err)
        })
      })

抱歉,这里的报错信息有误,对您造成误导。

开始出现CORS错误。其他的API请求(登录,其他class信息更新)均正常。

实际上这个请求失败了,应该返回一个 4xx 的错误,但是最近的一个改动引入了一个 bug,在 4xx 错误的时候没有正确的传递 Origin 头,因此错误地返回了一个跨域的报错。其他 API 请求成功了,因此没有触发这个 bug。

非常感谢反馈问题。我们将尽快修复。

Hi,

感谢回复,那么可以看到为什么会出现这样的错误么?可能和我太高频率注册有关系么?

我看到调试模时给出的api是 'http://api.munshare.com/1.1/users?',比api文档中兵多了一个?, 可能是多出的?导致的错误么? 我使用了js SDK中的user.signUp(), 之前的注册请求也没有出现问题。

可能和我太高频率注册有关系么?

有可能是这个原因。如果调用 API 太频繁,可能导致超过应用的并发限制(开发版应用的并发限制比较紧),这时会返回一个 429 Too many requests 报错(但是因为之前提到的 bug,错误返回了一个跨域的报错)。如果是测试开发阶段的应用,建议您控制下请求频率。如果是已经上线的正式项目,有许多来自真实用户请求导致超过并发限制,那么您可以考虑升级商用版。

多了一个 ? 是因为请求 users 的时候往往会附带参数,比如只返回三个结果就是 users?limit=3,因此 SDK 会自动拼接请求,在没有参数的情况下,就会附带一个空的 ?,这个和不带 ? 是等效的。

我是手动注册了三十余个账户,会达到并发的限制么?并发限制会在一个小时内统计么?我在前天出现的这个错误,到今天现在尝试注册还是出现错误。这个并发限制的时限是多少啊?

如果手动注册一般不会触发并发限制,可能并不是并发限制,是其他报错(然后真正的错误信息被之前说的跨域误报给覆盖掉了)。我们会尽快修复这个报错异常的问题,之后您可以再尝试下。

Hi,

刚刚半夜调试,一瞬间 (就是一分钟前),所有的API都出现了同样的错误。

Access to XMLHttpRequest at 'http://api.munshare.com/1.1/login' from origin 'http://localhost:8081' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

login,数据存储,查询都不可以了。可以帮我查看一下是什么原因么?

更新,现在除了注册的API其他又都好了。。。玄学啊

Hi,

能不能先帮我看一下注册的api出现了什么问题啊。这个正准备测试产品呢,现在都无法注册,卡在了这一步很心急啊。谢谢

注册用户碰到报错是每次必现还是有时成功、有时报错?报错的信息是什么?还是之前主帖的那个吗?如果是不一样的报错,麻烦贴一下报错信息。

点击这里会显示
{"code":401,"error":"Unauthorized."}
查询错误文档显示

401
信息 - Unauthorized.
含义 - 未经授权的访问,没有提供 App id,或者 App id 和 App key 校验失败,请检查配置。

我的appID是bGDlss1xXtSR3b1TJSKQjaEf-gzGzoHsz
确认了appID 和appKey同设置中心一致,而且其他的SDK api访问都没有问题。
请问可能是什么原因呢?

Hello,

五一假期之前可以帮忙看一下什么问题么 sob

Hi,
谢谢,我开启了了SDK 的调试模式,这是console输出的

leancloud:request request(0) POST http://api.munshare.com/1.1/users? 
{}
 
{username: "yaqi96@me.com", email: "yaqi96@me.com", password: "123"}
email: "yaqi96@me.com"
password: "123"
username: "yaqi96@me.com"
__proto__:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
 
{X-LC-Id: "bGDlss1xXtSR3b1TJSKQjaEf-gzGzoHsz", Content-Type: "application/json;charset=UTF-8", X-LC-Sign: "95805cdadb9d8f6b5e4721f371bccf80,1588236428435", X-LC-UA: "LeanCloud-JS-SDK/4.5.3 (Browser)"}
Content-Type: "application/json;charset=UTF-8"
X-LC-Id: "bGDlss1xXtSR3b1TJSKQjaEf-gzGzoHsz"
X-LC-Sign: "95805cdadb9d8f6b5e4721f371bccf80,1588236428435"
X-LC-UA: "LeanCloud-JS-SDK/4.5.3 (Browser)"
__proto__: Object

我看了一下论坛中类似的问题,有存在两个账号出现注册问题。 我用同一个邮箱之前在国际节点也有一个账号,但是app_id 和key我确认是华北几点的配置。有可能是这个问题么?

看了下,这个应用 bGDlss1xXtSR3b1TJSKQjaEf-gzGzoHsz 并没有绑定 api.munshare.com 这个域名,请检查 App ID 和 App Key 是否填写正确。

新注册的一个应用 没办法了

App ID 和 App Key 是需要和应用绑定的自定义域名相匹配的,否则会出问题。