javascript - 未经授权的 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)
可能是什么原因?
解决方案
如果资源需要身份验证,那么您可能会被重定向到登录页面,在这种情况下,您会尝试将页面的 HTML 代码解析为 JSON。
Content-Type
在尝试解析数据之前检查响应的标头以验证数据的格式,JSON 通常使用 MIME 类型application/json
,而 HTML 使用text/html
.
如果服务器需要身份验证才能访问资源,那么您通常需要Authorization
使用适当的凭据在请求中设置标头。
推荐阅读
- c# - 如何使用 PHP 生成 ASP.NET 密码
- laravel - laravel 中的数组验证
- php - 使用最少字符的 PHP AJAX XML 实时搜索
- node.js - 部署node js express应用-cent os
- php - redis连接成功时数据未发布到redis中
- nginx - nginx 请求应该去多个位置
- android - 无法理解 Lambda -> 运算符
- hyperledger-fabric - 在 Hyperledger Fabric 的多个组织中使用单个用户
- android - 我的应用程序在闲置一段时间后兑现
- javascript - Webpack - SyntaxError: Unexpected token {