Ajax, использующий JavaScript в расширении Chrome - ошибка заблокирована ответом из разных источников при помощи приложения MIME-типа / json - PullRequest
1 голос
/ 25 марта 2019

Не удалось получить ответ после Ajax простого массива из JS путем расширения chrome до моего внутреннего "python"

ошибка появляется в консоли:

Cross-Origin Read Blocking (CORB) blocked cross-origin response http://127.0.0.1:5000/test with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details

Я пытался проверить

https://www.chromestatus.com/feature/5629709824032768

и

https://www.chromium.org/Home/chromium-security/corb-for-developers

Из этих двух ресурсов я узнал, почему они создали CORB ИЛИ CORS, но он не предлагает какого-либо примера, который бы работал для всех разработчиков, или, может быть, я каким-то образом заблудился, я я не уверен, что я должен делать или добавлять к своему коду

обновление: я также дал этим попробовать

Как запретить CORB блокировать запросы к ресурсам данных, которые отвечают заголовками CORS?

Блокировка чтения из разных источников (CORB)

XMLHttpRequest не может загрузить XXX Нет заголовка «Access-Control-Allow-Origin»

background.js

//added this part:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  fetch(request.input, request.init).then(function(response) {
    return response.text().then(function(text) {
      sendResponse([{
        body: text,
        status: response.status,
        statusText: response.statusText,
      }, null]);
    });
  }, function(error) {
    sendResponse([null, error]);
  });
  return true;
});

MainFest:

{
  "manifest_version": 2,
  "name": "testExtention",
  "description": "test extention",

  "browser_action" : {
    "default_title" : "hello computer!",
    "default_popup" : "popup.html"
  },

  "background": {
    "scripts": ["background.js"]
  },
  "content_scripts": [
  {
      "matches": ["https://www.example.com/*", "https://m.example.com/*"],
      "js": ["content.js"]
  }],

  "version": "1.0",
  "permissions": [ "tabs", "storage" ,"http://127.0.0.1:5000/*" ]
}


my js Ajax код:

const req = new XMLHttpRequest();
req.open('POST' , "http://127.0.0.1:5000/test");
// for cors
req.setRequestHeader("dataType",'json');
req.setRequestHeader('responseType','application/json');
req.setRequestHeader('Access-Control-Allow-Credentials' , 'true');
req.setRequestHeader('Access-Control-Allow-Origin','*');
req.setRequestHeader('Access-Control-Allow-Methods','GET');
req.setRequestHeader('Access-Control-Allow-Headers','application/json');

req.onload = ()=>{

  var res = JSON.parse(req.responseText);
  console.log('the response from the server = > ',res)
}
const data = new FormData();
data.append('x', y);
req.send(data);

питон

from flask import Flask
from flask_cors import CORS ,cross_origin
app = Flask(__name__)

cors = CORS(app)


@app.route("/test" ,methods = ["POST"] )
def req():
    y = request.form.get("x")
    z = jsonify({"success":y, 'headers': {
    'Access-Control-Allow-Credentials' : 'true',
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET',
    'Access-Control-Allow-Headers':'application/json',
  }})
    z = request.form.get("x")

    print(f'ive recieved this \n\n {z}') // x is printed fine.

    return jsonify({"success":z})

В консоли я вижу, что Python получил и распечатал объект AJAX, но не отправил ответ на javaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...