Javascript 422错误';不可加工实体';从Chrome扩展调用API时
我正在构建一个Chrome扩展,旨在将用户当前页面上的信息(url、标题等)发送到带有Rails后端的RESTAPI。当我使用Postman测试API时,API调用会起作用,但当我通过扩展发送数据时,我会收到Javascript 422错误';不可加工实体';从Chrome扩展调用API时,javascript,ruby-on-rails,google-chrome,google-chrome-extension,Javascript,Ruby On Rails,Google Chrome,Google Chrome Extension,我正在构建一个Chrome扩展,旨在将用户当前页面上的信息(url、标题等)发送到带有Rails后端的RESTAPI。当我使用Postman测试API时,API调用会起作用,但当我通过扩展发送数据时,我会收到422(不可处理实体)错误 此文件侦听“单击我的扩展名”: 函数列表单击(){ const button=document.getElementById('send-data'); 按钮。addEventListener('单击',()=>{ chrome.tabs.executeScrip
422(不可处理实体)
错误
此文件侦听“单击我的扩展名”:
函数列表单击(){
const button=document.getElementById('send-data');
按钮。addEventListener('单击',()=>{
chrome.tabs.executeScript({
文件:“scripts/send data.js”
});
})
}
listenClick();
这是发送数据.js
文件:
function fetchData() {
title = document.querySelector('title').innerText;
const url = window.location.href;
return {
title: title,
url: url
}
}
function sendData(data){
const url = 'http://localhost:3000/api/v1/bookmarks';
fetch(url, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"X-User-Email": "test@mail.com",
"X-User-Token": "asdfkljIOJDHalsdfkla"
},
body: JSON.stringify({
"title": `${data.title}`,
"url": `${data.url}`,
})
})
}
sendData(fetchData());
错误发生在以'X-User-Email'
开头的行上。我正在使用'simple\u token\u authentication'
gem对用户进行身份验证,它使用这些头
有人能帮我看看我遗漏了什么吗?意识到问题出在我的ruby代码上,而不是上面引用的js.file。查看rails日志帮助我认识到这一点 尝试更改标题的内容类型标题:{'Content Type':'application/x-www-form-urlencoded;charset=UTF-8;application/json'}现代Chrome不允许内容脚本中的跨源请求,请参阅。在后台脚本中执行请求。检查rails日志。请求是否到达rails应用程序<代码>422错误来自rails应用程序或
Chrome不允许跨源请求
。如果来自rails应用程序的422错误
:比较请求参数
,并在此处共享两个请求日志。所以,我们可以帮助你。我检查了rails日志,问题实际上是我的ruby代码。我将书签分配给一个特定用户不存在的集合。谢谢你的提示@Mahfuz你能解释一下吗?