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