无法使用 GM_xmlhttpRequest 从 Tampermonkey 使用 POST 方法向 Scalatra 发送数据
Can't send data with GM_xmlhttpRequest from Tampermonkey with POST method to Scalatra
...它回答:500 服务器错误; java.lang.NoSuchMethodError: 'void org.scalatra.servlet.RichRequest.update(java.lang.Object, java.lang.Object)' 在... 在... 在... ...
我的代码:
const ajaxobj =
{ method: "POST"
, url: url
, data: '{"q":"anyad"}' //JSON.stringify(adat)
, dataType: "json"
, headers: { "Content-Type": "application/json" }
, onload: (resp) => { console.log(resp); ... }
}
console.log(ajaxobj)
GM_xmlhttpRequest(ajaxobj)
在 console.log(ajaxobj) 的回答中我看到:
data: Object { value: "{\"q\":\"anyad\"}" }
而不是字符串,一个 "value" 成员是字符串的对象。我认为这是 scalatra 不喜欢的,因为我可以从其他地方 (Angular) 向它发送一个字符串,而且它的工作原理非常棒。
现在有趣的是:
如果我不调用 GM_xmlhttpRequest 调用(将其注释掉),那么数据将是字符串,而不是对象。
我找到了一个实用的解决方案(但是它是如何工作的,为什么好,我无法理解背后的理论):
伪造一个纯字符串(非JSON)传输;从 ajax 对象中删除属性 dataType: "json" 和 headers: { "Content-Type": "application/json" }。
...它回答:500 服务器错误; java.lang.NoSuchMethodError: 'void org.scalatra.servlet.RichRequest.update(java.lang.Object, java.lang.Object)' 在... 在... 在... ...
我的代码:
const ajaxobj =
{ method: "POST"
, url: url
, data: '{"q":"anyad"}' //JSON.stringify(adat)
, dataType: "json"
, headers: { "Content-Type": "application/json" }
, onload: (resp) => { console.log(resp); ... }
}
console.log(ajaxobj)
GM_xmlhttpRequest(ajaxobj)
在 console.log(ajaxobj) 的回答中我看到:
data: Object { value: "{\"q\":\"anyad\"}" }
而不是字符串,一个 "value" 成员是字符串的对象。我认为这是 scalatra 不喜欢的,因为我可以从其他地方 (Angular) 向它发送一个字符串,而且它的工作原理非常棒。
现在有趣的是:
如果我不调用 GM_xmlhttpRequest 调用(将其注释掉),那么数据将是字符串,而不是对象。
我找到了一个实用的解决方案(但是它是如何工作的,为什么好,我无法理解背后的理论): 伪造一个纯字符串(非JSON)传输;从 ajax 对象中删除属性 dataType: "json" 和 headers: { "Content-Type": "application/json" }。