Получить мета-данные любого веб-сайта, используя только внешний интерфейс для расширений Chrome? - PullRequest
0 голосов
/ 19 октября 2018

Как видно из этого урока под заголовком "Кросс-домен из расширений Chrome" , в нем говорится, что

Расширения Chrome могут создавать перекрестные расширения.запросы домена к любому домену , если домен включен в раздел «разрешения» файла manifest.json

Поэтому я включил "permissions": ["<all_urls>"] в свой manifest.json, но этовсе еще не работает

Я использую https://github.com/jacktuck/unfurl, но выдает странную ошибку

Не удалось загрузить https://akshaykadam.me/: Нет 'Access-Control-Заголовок Allow-Origin 'присутствует в запрашиваемом ресурсе.Происхождение 'http://localhost:3000' поэтому не разрешено.Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.e TypeError: Не удалось получить

Мой базовый код выглядит так -

import unfurl from "unfurl";

_fetchMeta = async () => {
    try {
        let result = await unfurl({
            uri: "https://akshaykadam.me",
            headers: {
                "Access-Control-Allow-Origin": "*"
            }
        });
        console.log("result", result);
    } catch (e) {
        console.error("e", e);
    }
};

Полный код можно найти по адресу https://github.com/deadcoder0904/unfurl-chrome-extension-bug

Мне нужнополучить открытые теги графика или метатеги любого веб-сайта, используя только внешний интерфейс.А с приведенным выше кодом он не работает как расширение Chrome или как веб-сайт React Frontend

Нужно ли использовать его как прокси, как показано в https://stackoverflow.com/a/46774307/6141587 или https://stackoverflow.com/a/35911711/6141587?

Или я могу сделать это из чисто внешнего интерфейса без какого-либо прокси или сервера?

Или мне нужно использовать unfurl на сервере, и я могу отправлять свои запросы через него?

Редактировать:

Это работает с axios, как показано здесь , так что это, вероятно, проблема unfurl.Я обновлю этот пост, как только получу ответ на https://github.com/jacktuck/unfurl/issues/38

1 Ответ

0 голосов
/ 20 октября 2018

Я нашел решение ?

Проблема заключалась в том, что https://github.com/jacktuck/unfurl использует node-fetch, поэтому он не может работать в браузере, как указано в разделе node-fetch s LIMITS

Такие темы, как перекрестное происхождение, политика безопасности контента, смешанный контент, сервисные работники игнорируются, учитывая наш серверный контекст

Если он меняется на https://github.com/lquixada/cross-fetch, тогда он будет работать с любой средой, и я могу просто использовать unfurl для получения мета-тегов с любого URL-адреса, так как расширения Chrome не должны беспокоиться о совместном использовании ресурсов с исходным кодом (проблема CORS), если вы упомянули"permissions": ["<all_urls>"] in manifest.json

Следите за этим вопросом * https://github.com/jacktuck/unfurl/issues/38

Как только он закроется unfurl будет работать в любой среде:)

...