首页 > 解决方案 > 未经授权的 url 上的 Json 调用在 JSON 位置返回 Unexpected token <

问题描述

进行ajax调用:

let json = this._super(url, type, options);

返回时它将返回登录页面(HTML 代码),因为 url 未经授权,返回的 json 为:

SyntaxError: Unexpected token < in JSON at position 2
   at JSON.parse ()
   at jQuery.parseJSON (jquery.js:8520)
   at ajaxConvert (jquery.js:8846)
   at done (jquery.js:9264)
   at XMLHttpRequest.callback (jquery.js:9718)

Errors occured: ember-metal.js:3992 TypeError: Cannot read property ‘get’ of undefined
   at adapter.js:28
   at tryCatcher (rsvp.js:215)
   at invokeCallback (rsvp.js:393)
   at publish (rsvp.js:379)
   at publishRejection (rsvp.js:314)
   at rsvp.js:14

ember-metal.js:3992 SyntaxError: Unexpected token < in JSON at position 2
   at JSON.parse ()    
   at jQuery.parseJSON (jquery.js:8520)
   at ajaxConvert (jquery.js:8846)
   at done (jquery.js:9264)
   at XMLHttpRequest.callback (jquery.js:9718)

可能是什么原因?

标签: javascriptember.jsember-data

解决方案


如果资源需要身份验证,那么您可能会被重定向到登录页面,在这种情况下,您会尝试将页面的 HTML 代码解析为 JSON。

Content-Type在尝试解析数据之前检查响应的标头以验证数据的格式,JSON 通常使用 MIME 类型application/json,而 HTML 使用text/html.

如果服务器需要身份验证才能访问资源,那么您通常需要Authorization使用适当的凭据在请求中设置标头。


推荐阅读