簡體   English   中英

為什么這是跨域請求

[英]why is this a cross domain request

我正在嘗試制作一組​​文件以發送給某人,他們可以在本地的Web瀏覽器中查看某些內容。 使用Web服務器(Apache)查看時,我的代碼有效,但如果我僅將其作為文件加載(例如file:/// C:/Code/Web/test/index.html),則會收到跨域請求錯誤從我的JavaScript文件加載JSON文件時。 HTML,JS和JSON文件都在同一文件夾中。 我不確定這是一個跨域請求,為什么chrome和IE無法加載JSON文件。 Firefox可以毫無問題地加載它。

我用於加載文件的JS是:

const JSON_FILE = "tin.json";
var xmlhttp;

function webGLStart() 
{
    fetchDoc(JSON_FILE,loadJSON)
}

function fetchDoc(url,cfunc)
{
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    xmlhttp.onreadystatechange=cfunc;
    xmlhttp.open("GET",url,false);
    xmlhttp.send();
}

function loadJSON()
{
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        var input = JSON.parse(xmlhttp.responseText);
        displayData(input);
    }
}

我的html頁面中什么都沒有發生。 它只是畫布,主體在加載時會調用webGLStart。

有沒有解決的辦法,或者這是Chrome和IE不允許的?

它可以保護您免受以下形式的攻擊:

  • 您收到帶有HTML文檔作為附件的電子郵件
  • 雙擊附件,然后在默認瀏覽器中打開HTML文檔。
  • 文檔中嵌入的JavaScript訪問硬盤上的文件,並將其上傳到攻擊者

Chrome和IE完全禁止訪問文件方案URI。 僅當主機URI在目錄中且該目錄的祖先包含目標URI時,Firefox才允許它們。


您已經確定了解決方法:在Web服務器上托管Web應用程序。

由於安全原因,瀏覽器必須限制與本地文件系統的交互。 如果要測試ajax請求,則可以設置light http服務器環境(例如lighttpd,node.js npm程序包http-server)或使用開發解決方案之一,例如Microsoft WebMatrix。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM