我想使用ajax来检索令牌。
根据此documentation,以下是网址,请求标头和请求正文
POST https://api-production.august.com/session
Request Headers:
x-august-api-key: 727dba56-fe45–498d-b4aa-293f96aae0e5
x-kease-api-key: 727dba56-fe45–498d-b4aa-293f96aae0e5
Content-Type: application/json
Accept-Version: 0.0.1
User-Agent: August/Luna-3.2.2
Request Body: (JSON Encoded)
{
"installId": <Random UUID>,
"password": "XXXXXXXX",
"identifier": "phone:+15555551234"
}
我试图用ajax实现这个
$.ajax({
type: "POST",
url: "https://api-production.august.com/session",
dataType: "json",
headers:{
"x-august-api-key":"727dba56-fe45–498d-b4aa-293f96aae0e5",
"x-kease-api-key":"727dba56-fe45–498d-b4aa-293f96aae0e5",
"Content-Type": "application/json",
"Accept-Version": "0.0.1",
"User-Agent": "August/Luna-3.2.2"
},
data: JSON.stringify({installId: "7fb17963-21a8-4c23-8f81-121ed3298ad8",
password: "password",
identifier: "phone:+18885554444"})})
但是我没有得到令牌,我收到以下回复:
abort: function abort()
always: function always()
catch: function catch()
done: function add()
fail: function add()
getAllResponseHeaders: function getAllResponseHeaders()
getResponseHeader: function getResponseHeader()
overrideMimeType: function overrideMimeType()
pipe: function pipe()
progress: function add()
promise: function promise()
readyState: 0
responseJSON: undefined
setRequestHeader: function setRequestHeader()
state: function state()
status: 0
statusCode: function statusCode()
statusText: "error"
then: function then()
错误如下:
my error: ajax TypeError: Cannot convert string to ByteString because the character at index 13 has value 8211 which is greater than 255.
我也尝试在谷歌浏览器中运行此功能,但我收到以下错误:
"TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': Value is not a valid ByteString."
我也尝试了以下无效,因为我得到了同样的错误:
$.ajax({
type: "POST",
url: "https://api-production.august.com/session",
dataType: "json",
beforeSend: function(request) {
request.setRequestHeader("x-august-api-key", "727dba56-fe45–498d-b4aa-293f96aae0e5");
},
data: JSON.stringify({installId: "7fb17963-21a8-4c23-8f81-121ed3298ad8",
password: "password",
identifier: "phone:+18885554444"})})
答案 0 :(得分:3)
你的第一个错误有点模糊,但确实提到&#34;索引13&#34; (又名第14个字)。您的第二个错误可帮助您发现问题来自setRequestHeader
。因此,您应该查看传递给setRequestHeader
的字符串,更具体地说,查看这些字符串中的第14个字符。
k
EY –
498d-b4aa-293f96aae0e5 现在我们问自己,这些字符k
或–
中哪一个更有可能导致我们出现问题?应该直观地认为–
更可能是违规的角色,所以我们仔细看看它。
此时我们应该怀疑我们没有使用连字符(ascii值为45),而是使用其他一些看起来像连字符的字符。实际上,如果我们查找ascii值8211(8211来自您的第一个错误),我们会看到相关的字符是短划线。
有些编辑/观看者会让角色看起来与众不同,而有些则会让人看起来一样。对于我使用谷歌浏览器来查看这个问题,我可以比较你的密钥中的连字符,我可以看到第二个&#34;连字符&#34;看起来不像其他人。已经有点长了。
hyphen: -
en dash: –
因此,您应该使用密钥中的连字符替换短划线字符。那么你的字符串应该能够转换为ByteString没问题。