2015-11-04 95 views
0

我开发了一个Chrome扩展程序,它可以截取当前选项卡,并按计划通过ajax将其上载到服务器。它在我用来测试它的两台服务器上完美工作,但是当我转换到新服务器时,ajax调用现在产生了403个错误。Chrome扩展程序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>权限,我尝试使用http和https。

我知道存在安全内容调用或引用不安全脚本或资源的复杂问题,但我认为使用https配置的服务器不会影响任何内容。

该页面是浏览器可访问的,并且具有与最后两台服务器相同的权限。

控制台的错误,我得到的是:

POST https://****/upload_string.php 403 (Forbidden) 
(anonymous function) 
target.(anonymous function) 
safeCallbackApply 
handleResponse 

回答

0

很可能您的服务器的安全需求需要满足,因为它已被配置为在PHP上传url上使用HTTPS。如果您拥有服务器,请研究(即卷曲)并检查配置文件中的安全设置。检查浏览器开发工具中的HTTP请求/响应数据。您很可能需要使用Cookie和/或特殊标题(如Access-Control-Allow-Origin)来发送POST到安全服务器。

+0

我在一个小时前就明白了这一点。 Namecheap阻止了我的ajax调用。谢谢! – kchason

2

HTTP状态403意味着access denied。你的新域名是否需要一些认证?如果是这样 - 通过认证信息。另请查看控制台了解更多信息。

+0

同意,我没有意识到新的身份验证信息要求。服务器脚本完全一样。 – kchason