2017-09-28 1 views
2

Je suis attemping chercher une ressource externe dans une extension web FirefoxCORS vont chercher à Firefox WebExtension donne TypeError

for (var show of shows) { 
    let title = show.getElementsByClassName("video-preload-title-label")[0] 
    .innerText; 

    let search_url = `https://www.rottentomatoes.com/search/?search=${encodeURI(
    title 
)}`; 

    fetch(search_url, { mode: "cors", method: "get" }) 
    .then(response => { 
     if (!response.ok) { 
     throw Error(response.statusText); 
     } 
     console.log(response); 
    }) 
    .catch(err => { 
     console.log(err); 
    }); 
} 

Mais je reçois l'erreur suivante:

TypeError: NetworkError when attempting to fetch resource. 
Stack trace: 
@moz-extension://e009585c-e0b0-4898-82bd-5049f92b82d9/main.js:17:3 
main.js:25:7 

J'ai accorder les autorisations pertinentes à mon dossier manifest.json:

{ 
    "manifest_version": 2, 
    "name": "rotten-netflix", 
    "version": "1.0", 

    "description": "Adds rotton tomato score to netflix shows", 

    "icons": { 
     "48": "icons/border-48.png" 
    }, 

    "content_scripts": [ 
     { 
      "matches": ["*://*.netflix.com/*"], 
      "js": ["main.js"] 
     } 
    ], 
    "permissions": [ 
     "*://rottentomatoes.com/search*", 
     "webRequest" 
    ] 
} 

Tous les search_urls fol bas le même schéma, i.e.:

https://www.rottentomatoes.com/search/?search=Toast%20of%20London 

J'ai donc ajouté le "*://rottentomatoes.com/search*"Match Pattern à mon dossier manifeste. Mais cela ne semble pas avoir fait la différence.

Je suis perplexe car je ne sais pas s'il s'agit d'une erreur d'autorisation, c'est-à-dire que je n'ai pas les autorisations requises pour effectuer des demandes dans mon extension. Ou si le code de récupération lui-même est incorrect.

+0

Quelle est la 'réponse' entière? – Makyen

Répondre

-1

Je pense que cela ne peut pas être fait. Je ne suis pas sûr à 100% comment cela fonctionne dans les extensions Web de Firefox, mais je pense qu'il devrait s'en tenir à la "politique de la même origine interdit la lecture de la ressource". Puisque vous ne pouvez pas influencer rottentomatoes pour ajouter un en-tête Access-Control-Allow-Origin *, la seule solution que je vois est de créer une sorte de script de proxy intermédiaire entre votre demande.