В настоящее время я пытаюсь разработать расширение для Chrome, которое может извлекать текст с веб-страницы https на мой сервер, который работает только с http. Я просмотрел это руководство и этот вопрос.
Из этого я сделал вывод, что для того, чтобы у меня работал кросс-происхождение xhr, мне нужно
- установить разрешения манифеста, чтобы включить URL-адреса, на которые я ориентируюсь
Для этого мои разрешения выглядят следующим образом:
"permissions": [
"tabs", "<all_urls>"
]
У меня были введены определенные URL-адреса, но мне пришлось удалить их после того, как я упаковал свой и изменил свой на «‹ all_urls >».
- создать XMLHttpRequest для указанного URL-адреса
Для этого отрывок моего кода выглядит так:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("response").innerText = xhr.responseText;
console.log(xhr.responseText);
}
};
xhr.open("POST", MY_SERVER_URL, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(message.toString());
MY_SERVER_URL — это действительный URL-адрес, который я проверял снова и снова, но по многим причинам я не могу указать этот вопрос ;(
message — это массив, содержащий ряд различных сообщений, которые я хотел бы отправить на свой сервер.
- упакуйте мой код расширения и установите его
Следуя руководству по упаковке от Google, я упаковал свою папку в файл .crx и перетащил сбросил его на мою chrome://extensions
страницу для установки.
- на моем сервере установлен
rack cors
gem.
У меня есть следующая строка в моем Gemfile на сервере:
gem 'rack-cors', :require => 'rack/cors'
Тем не менее, я все еще получаю следующее сообщение об ошибке, когда пытаюсь отправить данные на свой сервер.
Mixed Content: The page at MESSAGE_PARSING_URL was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint MY_SERVER_URL. This request has been blocked; the content must be served over HTTPS.
Что я могу делать неправильно? Буду очень признателен за любую помощь. Спасибо