gpt4 book ai didi

来自 Chrome 扩展的 ajax 已处理,但收到 responseText =""和 status=0

转载 作者:行者123 更新时间:2023-12-02 02:51:57 24 4
gpt4 key购买 nike

我正在编写一个 google-chrome 扩展,它需要向服务器发出 ajax 请求,发送一些数据,并接收一些返回的数据。我的服务器是 Tomcat 6.0,在本地主机上运行。

我能够在服务器端接收所有数据,进行我需要的所有处理,并将响应发送回扩展程序,但我在回调中得到的状态是0,并且responseText =“”。
我的猜测是问题要么在于服务器 - 返回对源自 chrome-extension://... url 的请求的响应,要么在于扩展 - 接收来自 localhost:8080 的响应。

我当然已经设置了必要的权限,并且尝试将响应的内容类型设置为“text/xml”、“text/html”和“text/plain” - 这没有什么区别。我尝试过将 ajax 与 XMLHttpRequest 和 JQuery 一起使用 - 两者都有同样的问题。我发现了这些问题,但它们似乎并没有解决我的问题:
1.http://www.plee.me/blog/2009/08/ajax-with-chrome-empty-responsetext/
2.http://bugs.jquery.com/ticket/7653

这是我的代码:bg.js(背景页面)

function saveText(data) {
var requrl = serverUrl + addTextUrl;
var params = json2urlParams(data);
jQuery.ajax({
type : "POST",
url : requrl,
data : params,
success : function (data, textStatus, XMLHttpRequest) {
console.log("Data Saved: " + msg);
}
});

// var xhr = new XMLHttpRequest();
// xhr.open("POST", requrl, true);
// xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// xhr.onreadystatechange = function (progress) {
// if (xhr.readyState == 4) {
// console.log("Data Saved: " + this.response);
// }
// };
// xhr.send(params);

}

addContentServlet.java:(服务器端)

protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ErrorCodes error = addContent(request, response);
response.setContentType("text/plain");
//response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
//response.setIntHeader("errorCode", error.ordinal());
response.getWriter().write(error.toString());
response.setIntHeader("errorcode", error.ordinal());
if(error == ErrorCodes.SUCCESS){
response.setStatus(error.toHttpErrorCode());
response.flushBuffer();
}
else{
response.sendError(error.toHttpErrorCode(), error.toString());
}
}

编辑:

我注意到在后台页面的 chrome 控制台中,对于返回到扩展的每个 ajax,我都会得到一个

XMLHttpRequest cannot load http:// localhost:8080/stp_poc/MyServlet. Origin chrome-extension://fmmolofppekcdickmdcjflhkbmpdomba is not allowed by Access-Control-Allow-Origin.

我尝试丢失 bg.js 并将所有代码放在主页中 - 但没有成功。为什么 XMLHttpRequest 同意发送请求,但没有收到返回的请求?也许是服务器配置问题?我是新手,所以也许我错过了一些基本的东西,比如响应中的标题

<小时/>

编辑我终于解决了这个问题:我不应该在我的许可中包含端口号。这是我写的错误权限:

"permissions" : [
"http://localhost:8080/"
]

这是正确的形式:

"permissions" : [
"http://localhost/"
]

现在一切似乎都正常。

最佳答案

问题是我不应该在我的权限中包含端口号。

这是我写的错误许可:

"permissions" : [
"http://localhost:8080/"
]

这是正确的形式:

"permissions" : [
"http://localhost/"
]

关于来自 Chrome 扩展的 ajax 已处理,但收到 responseText =""和 status=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com