"主机名不匹配"在PythonAnywhere

时间:2017-05-22 08:52:51

标签: ssl python-requests pyopenssl

编辑:我解决了问题,请参阅答案中的链接。

我正在使用 XMLHttpRequest AJAX API将来自不同网站的数据发送到PythonAnywhere中的服务器。 奇怪的事情发生了:取决于网站,我们发送成功或者我们收到此错误

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)(我尝试访问该页面的地方),我会得到这个日志:

enter image description here

我在Python request library上读到它可能与SSL验证有关,但我对它几乎没有任何线索。我试图检查其他类似的问题,但我没有找到答案。

有没有人经历过类似的事情并成功解决了它?

1 个答案:

答案 0 :(得分:2)

它仍然使用Python< 2.7.9 this answer为我工作。 Python 2不支持SNI,这意味着您应该遵循这样的答案,并these requirements使请求与SSL证书验证一起使用。