Jquery 从Chrome控制台发出的POST HTTP调用给出的结果与从扩展名发出的结果不同

Jquery 从Chrome控制台发出的POST HTTP调用给出的结果与从扩展名发出的结果不同,jquery,http,post,google-chrome-extension,shopify,Jquery,Http,Post,Google Chrome Extension,Shopify,我正在做一个Chrome扩展,在当前选项卡中对网站进行POST调用。这是一个登录后的网站(特别是Shopify)。在Chrome控制台中进行调用时效果良好,但在扩展名background.js中进行调用时,我会得到303重定向,然后是400重定向。这一呼吁大体上遵循了这一模式: $.ajax({ type: "POST", url: 'https://.../apply_changes.json', contentType: 'application/json', headers

我正在做一个Chrome扩展,在当前选项卡中对网站进行POST调用。这是一个登录后的网站(特别是Shopify)。在Chrome控制台中进行调用时效果良好,但在扩展名background.js中进行调用时,我会得到303重定向,然后是400重定向。这一呼吁大体上遵循了这一模式:

$.ajax({
  type: "POST",
  url: 'https://.../apply_changes.json',
  contentType: 'application/json',
  headers: {          
    'Accept': "application/json, text/javascript, */*; q=0.01",   
  }
  data: JSON.stringify({"key":"value",...}),
  success: function(data){
   alert(data);
  },
  failure: function(errMsg) {
    alert(errMsg);
  }
});

有没有办法让这个调用在分机中像在控制台中一样工作?感谢您的帮助

我最终找到了一个解决方法:将脚本直接注入页面()。

400错误是格式错误或路由错误。也许这就是分机呼叫的问题,糟糕的路由。如果你能解释更多你想做的事情,会有帮助的。现在还不清楚。前端商店?后端商店?什么是端点?嗨,谢谢你的回复。什么可能是错误的路由?向站点提交信息只是一个简单的POST请求,同样的请求也可以从Chrome控制台中执行。你确定你的代码是这样的吗?对于
contentType
,您可能需要使用
withCredentials
来共享与页面相同的会话,即
xhrFields:{withCredentials:true}
编辑以修复contentType,并填充Accept头。我根据记忆很快地打了这些。