我使用jquery.ajax函数将谷歌浏览器扩展程序的数据发布到我的网络服务,如下代码所示:
$.ajax({
type: "POST",
url: serviceUrl,
data: data,
success: function(msg){
if(typeof(Me.config.onSumitted) == "function"){
Me.config.onSumitted(msg);
}
},
error: function(){
if(typeof(Me.config.onError) == "function"){
Me.config.onError();
}
}
});
但是我收到了错误:
XMLHttpRequest cannot load http://todomain.com/Service.asp. Origin http://fromtabdomain.com is not allowed by Access-Control-Allow-Origin.
我该如何解决?
答案 0 :(得分:13)
答案 1 :(得分:10)
您需要向manifest.js文件添加权限
"permissions": [
"http://www.yourwebsite.com/"
],
答案 2 :(得分:3)
@ChristopheCVB指出http://code.google.com/chrome/extensions/xhr.html告诉你该怎么做:
请在manifest.json中添加permissions
部分:
{
"name": "yourExtension",
"permissions": [
"http://fromtabdomain.com"
]
}
答案 3 :(得分:1)
我使用原生的ajax来解决这个问题。你可以通过以下步骤来做到这一点。
ajax = function(options, callback) {
var xhr;
xhr = new XMLHttpRequest();
xhr.open(options.type, options.url, options.async || true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
return callback(xhr.responseText);
}
};
return xhr.send();
};
答案 4 :(得分:0)
因为same origin policy将crossDomain
设置为true(ise jquery版本1.5或更高版本)
$.ajax({
type: "POST", //or GET
url: serviceUrl,
data: data,
crossDomain:true,
cache:false,
async:false,
success: function(msg){
//do some thing
},
error: function(jxhr){
alert(jxhr.responseText);
//do some thing
}
});