Can a Chrome extension be denied for attempting to retrieve JSON data from a backend server?

Recently, I created a Chrome extension with the main purpose of retrieving specific data from the backend and using it to perform actions on certain domains visited by users.
However, my efforts to have it published have been met with rejection. The reason provided was:

"Your item was found to have requested/fetched one or more external scripts. An example of this is the backend URL in background.js. Please remove all external fetches, including Json type."

(This feedback came as the last of three emails sent to me, each adding a few more words. With only one email received per day, the whole process has become quite frustrating.)

In my background script, I utilize jQuery.ajax. Upon further research, I discovered that by default, it attempts to handle json requests as jsonp requests (although not entirely confirmed). Thus, I set the jsonp property to false in every ajax call within my code. Despite these adjustments, my extension was rejected again today without any additional correspondence, leading me to believe they are specifically targeting the json fetching component.

For reference, here is an example of an ajax call within my code:

$.ajax({
    url: backendUrl + '/theendpoint',
    data: {
        paramName: 'paramValue'
    },
    dataType: 'json',
    cache: false,
    jsonp: false
})

While I am under the impression that my approach is permissible, I am aware that interpreting the issue solely based on a snippet of code can be challenging. However, I am confident the problem lies within the ajax calls. Unfortunately, due to limitations, I cannot disclose the content of my manifest file here.

I did include my backend in the permissions section of the manifest. Should I also add it to the content_security_policy, even though it is just used for fetching json and not scripts?

Any assistance would be greatly appreciated.

Edit: On a side note, I am curious if providing a physical address and a link to a privacy policy in my developer account is mandatory. Could this requirement be contributing to the ongoing rejections of my extension? (Interestingly, the most recent rejection did not come with an accompanying email.)

Answer №1

(I was hesitant to share this as a solution, but)

Earlier today, I stood my ground and emphasized that JSON is not a script, and that it should be accessible from my backend. Shortly after sending an email asserting this point, I coincidentally received the following response:

Thank you for contacting us.

Upon further review, we have reinstated your submission, and it will be live on the Chrome Web Store within 30 minutes.

Thank you for your cooperation, Chrome Web Store team

I want to mention that I utilized this support form for assistance. It seems like this might have played a role in resolving the issue.

The lesson here: If your extension faces unjust rejection, persist and clarify your position with evidence...

Now, I just need to figure out why it was abruptly removed from the store...

Edit: My extension was mistakenly taken down, but upon reaching out through the support form, it was swiftly reinstated. Utilize the support form when needed, it actually makes a difference.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Reactjs is retrieving several items with just one click on individual items

I am having trouble getting only a single sub-category to display. Currently, when I click on a single category, all related sub-categories are showing up. For example, in the screenshot provided, under the Electronic category, there are two subcategories: ...

Experiencing a hiccup in your jQuery animation?

Click here to access the fiddle demonstrating the issue. A situation arises where a span with display: inline-block houses another span that is being slowly hidden. The container span unexpectedly shifts back to its original position once the hiding proces ...

Converting JSON Object to Plain Old Java Object (POJO) in Java

Currently facing the challenge of converting an Android app to a Nokia S40 app. The use of GSON in Android for JSON parsing is not feasible due to compatibility issues with J2ME. Attempts with Flexson and Jackson have been unsuccessful. Is there any spec ...

Basic tap tracker

Is there a way to use JavaScript to display a number in a textbox, starting from 10 and decreasing by 1 every time a button is clicked? ...

What is the best way to retrieve and access JSON data from an external file?

Recently, I started learning jQuery and I'm excited to access JSON data retrieved from a PHP file. This is my PHP code: $serverName = "(local)"; $connectionInfo = array( "Database"=>"sample"); $conn = sqlsrv_connect( $serverName, $connec ...

Is it possible to fetch a data record from my database using ajax and jquery?

I am attempting to fetch data from my database using a button without causing the page to refresh. I have limited experience with ajax and have been struggling to make it work. Here is what I have so far. Any assistance would be greatly appreciated, thank ...

Tips for converting JSON String data to JSON Number data

Hello everyone, I am facing an issue with converting the 'review' value from String to a numerical format in JSON. This is causing problems when trying to perform calculations, leading to incorrect results. The scenario involves saving user comm ...

SEO Friendly URL for JQuery Tabbed Content

I have developed a jQuery powered tabbed content system, where clicking on a tab changes the content below. However, I am facing an SEO issue. The SEO specialist has advised me to make it more SEO-friendly by adding different URLs to each tab. Can anyone ...

An issue with the Babel version is preventing the Express API from starting up successfully

Error! Message: [nodemon] starting `babel-node index.js` C:\Users\Zara Gunner\AppData\Roaming\npm\node_modules\babel-cli\node_modules\babel-core\lib\transformation\file\options\option-ma ...

How to utilize JQ to find specific key, value pairs within a list of objects sharing identical keys

Consider the JSON object provided below: { "company1": { "employees": [ { "name": "John", "title": "CEO" }, { ...

Stop focusing on the React input box after typing just one character

Whenever a character is inputted into the text box The state gets updated with the new character Then, I lose focus on the text box This restricts me to modifying the text box one keypress at a time The text box is nested within 4 other components inclu ...

Is it possible to display data on a webpage without using dynamic content, or do I need to rely on JavaScript

Imagine a scenario where I have a single-page website and I want to optimize the loading time by only displaying content below the fold when the user clicks on a link to access it. However, I don't want users with disabled JavaScript to miss out on th ...

Is it possible to showcase multiple items in react JS based on logical operators?

How can I update the navigation bar to display different menu options based on the user's login status? When a user is logged in, the "Logout", "Add Product", and "Manage Inventory" options should be shown. If a user is not logged in, only the "Home" ...

What is the process for modifying event (hover & click) on a legend item within highcharts?

When hovering over chart points, you can see the point value in the center of the pie chart. Similarly, when you stop hovering over a chart point, you can see the total value displayed. This behavior also applies when hovering over a legend item. const cha ...

Mastering the Art of Destructuring within React Components

After extensive research online, I still struggle to fully grasp destructuring, although I'm getting there. //before destructuring function me(details){ console.log('My name is ' + details.name + ' and I work for ' + details.com ...

Inconsistencies in latency experienced when making calls to Google Sheets V4 API

Recently, I've been encountering latency issues with the following code: var latency = Date.now(); const sheetFile = await google.sheets({version: 'v4', auth}); var result = await sheetFile.spreadsheets.values.get({spreadsheetId: shee ...

Ways to evaluate and contrast two JSON values in JavaScript by their key names?

I am dealing with two JSON arrays that look like this: array1=[{a:1,b:2,c:3,d:4}] & array2=[{a:2,b:5,c:3,d:4}] Is there a way to determine which key in array2 has the same value as one of the keys in array1? For example, in array 1, key b has a value ...

Is there a way to update a useState in TabPanel without causing a re-render?

For the past few months, I've been immersing myself in React and MUI. Recently, I encountered a problem that has me stumped. The Goal: I receive data from a backend and need to display it for users to edit before sending the changes back to the serv ...

What exactly is the significance of the code snippet "var data = jQuery(msg), script;" in JavaScript?

this snippet is extracted from a Google Chrome extension "search" == request.ajax && $.ajax({ url: request.url, type: "GET", dataType: "html" }).done(function(msg) { if (msg.indexOf("https://login.testabc.com/ ...

The Three.js scene is failing to render properly on subsequent attempts

Currently, I am in the process of developing a web-based height map generator using Three.js. The project involves utilizing multiple canvases to display the generated height map, individual octaves that make up the map, and a separate canvas to showcase h ...