2017-04-26 42 views
0

我想在線閱讀html文檔並使用Angular從它解析一些數據。問題是我不斷收到有關cors的錯誤。我讀html文件的代碼是:如何閱讀在線html文檔以在Angular中輸入字符串

loadParsingData(htmlToParse:String){ 
    let retVal = this.http.get(htmlToParse.toString()) 
    .map(res => res.text()) 
    return retVal; } 

當我嘗試測試此代碼我希望從特定網站獲取HTML文檔(例如IMDB最受歡迎的電影)的說法,但我得到的是:

XMLHttpRequest無法加載 http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8。否 「訪問控制 - 允許來源」標題出現在請求的 資源中。

任何人都可以幫我嗎?預先感謝您。

回答

1

您可以通過CORS代理髮送您的請求。

如果你在你的代碼指定URL http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8現在,只需更換與此網址:

https://cors-anywhere.herokuapp.com/http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8 

這將導致請求被髮送到https://cors-anywhere.herokuapp.com,代理然後將發送請求到http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8。當代理得到響應時,它會接收並添加Access-Control-Allow-Origin響應標頭,然後將它作爲響應傳遞給請求的前端代碼。

您的瀏覽器看到的響應標題爲Access-Control-Allow-Origin,所以瀏覽器顯示的錯誤消息現在消失了,瀏覽器允許您的前端JavaScript代碼訪問響應。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS在CORS上有一般的細節,"No 'Access-Control-Allow-Origin' header is present on the requested resource"是有關如何設置自己的CORS代理的更多細節的答案。