Javascript 被CORS阻止的json文件

Javascript 被CORS阻止的json文件,javascript,python,json,cors,Javascript,Python,Json,Cors,在我的学校项目中,我使用了一个链接到Raspberry pi的硬件按钮,并让它根据按钮按下(用Python编码)给出一个真值或假值。这保存在Pi上的本地json文件中,我使用javascript将值发送到本地网站 问题是,我在浏览器的控制台中遇到此错误: 访问位于“”的XMLHttpRequestfile:///home/pi/website/button-status.jsonCORS策略已阻止来自源“null”:跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、chro

在我的学校项目中,我使用了一个链接到Raspberry pi的硬件按钮,并让它根据按钮按下(用Python编码)给出一个真值或假值。这保存在Pi上的本地json文件中,我使用javascript将值发送到本地网站

问题是,我在浏览器的控制台中遇到此错误:

访问位于“”的XMLHttpRequestfile:///home/pi/website/button-status.jsonCORS策略已阻止来自源“null”:跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、chrome不受信任、https

我已经在我的笔记本电脑上测试了代码,它运行良好,只是在Pi上它给出了这个错误。我在Pi上使用chromium作为浏览器

有人知道为什么会发生这种情况以及如何解决吗?提前谢谢

Python代码:

import json
import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

waar = 1
nWaar = 0
button_status = False

path = "/home/pi/website"

def save_button_status():
    with open(path + "/button-status.json", "w") as f:
        json.dump({'status': button_status}, f)

while True:
    input_state = GPIO.input(17)

    if input_state == False :
        if waar == 1:
            print('Button Press True')
            button_status = True
            save_button_status()
            waar = 0
            nWaar = 1
            sleep(5)



    if input_state == True:
        if nWaar == 1:
            print('Button Press False')
            button_status = False
            save_button_status()
            waar = 1
            nWaar = 0
Javascript:

function get(url, success) {
console.log('hoi');
    //--- Get JSON data at the given URL and call success if successful
    const request = new XMLHttpRequest();
    request.open("GET", url, true);
    request.onreadystatechange = function() {
        if (request.readyState === 4 && request.status === 200) {
            success(JSON.parse(request.responseText));
        }
    };
    request.send();
}

function receiveStatus(response) {
    if (response.status !== status) {  // only do something if status has changed
        status = response.status;
        console.log('button status is now', status);
    }
}
let status;
let interval = setInterval(() => get("button-status.json", receiveStatus), 2000);

你应该看看我找到的这篇媒体文章,我认为它应该有助于解决你的问题,更好地理解CORS

它所说的是,您只需要调整请求中的标题,以允许来自特定位置的特定响应。它使用一个URL,但我认为如果你在本地网络上,直接IP地址应该是可以的。如果你在远离网络的地方工作,你必须设置一些端口转发,如果这是一个学校项目,可能会对他们制定的任何网络法规造成困难