在Crossrider扩展中使用AJAX请求的CSP问题

CSP issue using AJAX requests on in a Crossrider extension

本文关键字:请求 CSP 问题 AJAX Crossrider 扩展      更新时间:2023-09-26

我试图在Crossrider扩展中运行AJAX请求,但我得到一个CSP相关的错误。

下面是我的代码(为保护隐私而修改):

$.ajax({
  url : "https://example.com/...",
  type : 'POST',
  dataType : 'json',
  data : {user: "user", pass: "pass"}
  }).done(function(data) {
    console.log("POST Succeeded");
  }).fail(function(a, b, c, d) {
    console.log("POST Failed");
});

如果我从扩展运行代码,它不工作,它给出了一个"拒绝访问"错误!

为什么我不能在Crossrider扩展中运行请求?

在扩展中使用标准jQuery AJAX方法通常会导致跨域问题,从而阻止对内容的访问;因此,在编写Crossrider扩展时,最佳实践是使用appAPI。请求框架提供的方法,这些方法是专门为跨浏览器跨域安全而开发的。

因此,在您的情况下,您可以在extension.jsbackground.js中重写POST请求,如下:
appAPI.ready(function($) {
  appAPI.request.post({
    url: "https://example.com/...",
    contentType: "application/json",
    postData: {user: "user", pass: "pass"},
    onSuccess: function(response) {
      console.log("POST Succeeded");
    },
    onFailure: function(code) {
      console.log("POST Failed");
    }
  });
});

[披露:我是Crossrider员工]