"hostname doesn't match" 在 PythonAnywhere 中使用请求时
"hostname doesn't match" when using requests in PythonAnywhere
编辑:我解决了问题,请参阅答案中的链接。
我在 PythonAnywhere 中使用 XMLHttpRequest AJAX API 从不同网站向我们的服务器发送数据。
发生了一些奇怪的事情:根据网站的不同,我们要么发送成功,要么收到此错误
POST https://canecto.pythonanywhere.com/api/ 500 (Internal Server Error)
即使加载了相同的代码。
我尝试在 Chrome 中通过 JavaScript 控制台手动打开请求并发送数据,但没有任何变化。
代码段如下所示:
var url = "https://canecto.pythonanywhere.com/api/";
var xmlHttpPost = new XMLHttpRequest();
xmlHttpPost.open("POST", url, true);
xmlHttpPost.setRequestHeader("Content-type", "application/json");
var postData = {
page_url: window.location.href,
time_on_page: activeTime,
cookie: cookie,
/* some variables */
};
xmlHttpPost.onreadystatechange = function() {
if (xmlHttpPost.readyState == 4 && XMLHttpRequest.DONE) {
console.log('');
}
};
/* send data */
xmlHttpPost.send(JSON.stringify(postData));
我看了here,应该不是客户端的问题JavaScript。
如果我在服务器端检查,对于行 requests.get(page_url, headers=HEADER, timeout=10)
(我尝试访问页面的地方),我得到这个日志:
我在 Python request library 上看到它可能与 SSL 验证有关,但我对此知之甚少。我尝试查看其他类似问题,但我没有找到答案。
有没有人有类似的经历并成功解决的?
仍然使用 Python < 2.7.9 的人:this answer worked for me. SNI is not supported in Python 2, that means you should follow such answer and these requirements 使请求与 SSL 证书验证一起工作。
编辑:我解决了问题,请参阅答案中的链接。
我在 PythonAnywhere 中使用 XMLHttpRequest AJAX API 从不同网站向我们的服务器发送数据。 发生了一些奇怪的事情:根据网站的不同,我们要么发送成功,要么收到此错误
POST https://canecto.pythonanywhere.com/api/ 500 (Internal Server Error)
即使加载了相同的代码。 我尝试在 Chrome 中通过 JavaScript 控制台手动打开请求并发送数据,但没有任何变化。
代码段如下所示:
var url = "https://canecto.pythonanywhere.com/api/";
var xmlHttpPost = new XMLHttpRequest();
xmlHttpPost.open("POST", url, true);
xmlHttpPost.setRequestHeader("Content-type", "application/json");
var postData = {
page_url: window.location.href,
time_on_page: activeTime,
cookie: cookie,
/* some variables */
};
xmlHttpPost.onreadystatechange = function() {
if (xmlHttpPost.readyState == 4 && XMLHttpRequest.DONE) {
console.log('');
}
};
/* send data */
xmlHttpPost.send(JSON.stringify(postData));
我看了here,应该不是客户端的问题JavaScript。
如果我在服务器端检查,对于行 requests.get(page_url, headers=HEADER, timeout=10)
(我尝试访问页面的地方),我得到这个日志:
我在 Python request library 上看到它可能与 SSL 验证有关,但我对此知之甚少。我尝试查看其他类似问题,但我没有找到答案。
有没有人有类似的经历并成功解决的?
仍然使用 Python < 2.7.9 的人:this answer worked for me. SNI is not supported in Python 2, that means you should follow such answer and these requirements 使请求与 SSL 证书验证一起工作。