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

时间:2014-08-07 13:09:34

标签: javascript ajax xmlhttprequest crossrider

我正在尝试在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扩展程序中运行请求?

1 个答案:

答案 0 :(得分:4)

在扩展程序中使用标准jQuery AJAX方法通常会导致阻止访问内容的跨域问题;因此,在编写Crossrider扩展时,最佳做法是使用框架提供的appAPI.request方法,这些方法专门为跨浏览器跨域安全而开发。< / p>

因此,在您的情况下,您可以在 extension.js background.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员工]