【发布时间】:2019-08-04 20:07:17
【问题描述】:
我的代码在 Chrome 更新之前运行良好。
我对我的服务器进行了 ajax 调用。我的服务器收到呼叫,向客户端返回 JSON,但答案始终为空。当我查看 Fiddler 时,我会从服务器得到答案。
我尝试使用 JQuery,也尝试使用 xmlhttp 调用。总是一样的结果
是否应用了新的 CORS 政策规则...?
有我的 xmlHTTP 调用
var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
var theUrl = "URL";
xmlhttp.open("POST", theUrl);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send('{ "args" :{ "Obj":"my obj"}}');
xmlhttp.onreadystatechange = function(state,xhh,aaa){
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
alert(xmlhttp.responseText);
}
}
ajax调用类似
$.ajax({
url: "URL",
data: '{ "args" :{ "Obj":"my obj"}}',
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
async: false,
error: function (xhr, ajaxOptions, thrownError) {
if (that.Fail != null) {
that.Fail();
}
},
success : function(data){
alert(data);
}
})
【问题讨论】:
-
您是否在内容脚本中提出请求?如果是这样,如果您从后台脚本制作它会有所帮助吗?否则这听起来像是一个错误,看看在 chrome://flags 中禁用“网络服务”是否有帮助。
-
@wOxxOm 是的,我在当时的内容脚本中。我会尝试将我的脚本放在后台脚本中。
-
我意识到它看起来有点奇怪。出于安全原因,他们不允许您从 content.js 创建调用。安全问题,当您发送数据时,可能比您收到的更多。我的电话是正确的,这是我无法回复的答案。如果我是一个“黑客”,我不在乎答案,我的首要任务应该是发送数据,而不是从我的服务器中检索它......我不明白这里的举动......那个更新破坏了我们的 Chrome 扩展和给我们很多工作:-(
-
您可以通过发出 GET 请求来发送数据 - 只需将数据放入 URL 哈希或其查询参数中。一个 URL 可以是 2MB 长。
-
@wOxxOm 你是对的。这是我的意思,为什么他们不只是阻止来自 content.js 的所有 CORB 请求,而是只收到答案。
标签: ajax google-chrome google-chrome-extension cors cross-origin-read-blocking