【发布时间】:2015-11-04 13:53:22
【问题描述】:
我开发了一个 Chrome 扩展程序,它可以截取当前选项卡的屏幕截图,并按计划通过 ajax 将其上传到服务器。它在我用来测试它的两台服务器上完美运行,但是当我转换到新服务器时,ajax 调用现在产生 403 错误。
我能看到的唯一变化是新服务器具有 SSL 证书,但允许纯 http 访问。另外,我有一个我一直在测试的子域,它没有配置任何 SSL。
我的上传脚本如下:
var xhr = new XMLHttpRequest(), formData = new FormData();
xhr.addEventListener("load", processSuccess);
xhr.addEventListener("error", processError);
formData.append("img", screenshotUrl);
formData.append("auth_string", auth_string);
formData.append("site", site);
xhr.open("POST", upload_url, true);
xhr.send(formData);
在我的清单中,我拥有以下权限:
"permissions": [
"activeTab",
"tabs",
"<all_urls>",
"alarms",
"storage",
"http://**********" //the url to the script
]
鉴于<all_urls> 的权限,我认为特定的URL 是多余的,我用http 和https 都试过了。
我知道安全内容调用或引用不安全的脚本或资源会带来复杂性,但我认为配置 https 的服务器不会影响任何事情。
该页面可通过浏览器访问,并且具有与前两台服务器相同的权限。
我得到的控制台错误是:
POST https://****/upload_string.php 403 (Forbidden)
(anonymous function)
target.(anonymous function)
safeCallbackApply
handleResponse
【问题讨论】:
标签: jquery ajax google-chrome ssl google-chrome-extension