2017-01-10 374 views
0

我想通過ajax請求訪問位於gitlab上的我的存儲庫中的原始文件。但是,它不工作,我想知道是否必須相應地設置我的項目或什麼。很明顯我的項目是public。這是我得到的錯誤消息:通過ajax請求訪問gitlab文件

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

這意味着它的結束。

回答

0

要了解Access-Control-Allow-Origin頭,我強烈建議How does Access-Control-Allow-Origin header work?

當站點A嘗試獲取來自站點B的內容,站點B可以發送 訪問控制允許來源響應頭告訴瀏覽器 此頁面的內容可以被某些來源訪問。 (起源 是一個域,加上方案和端口號。)默認情況下,站點B的 頁面不能被任何其他來源訪問;使用 Access-Control-Allow-Origin標題爲特定請求源的跨源 訪問打開了一扇門。

如果您的GitLab託管在gitlab.com上,我沒有看到將您的域添加到響應標頭的方法。

最簡單的解決方案是將XMLHttpRequests包裝到GitLab中,以便對您的應用程序發出請求 - 並且在後端您只需獲取並返回數據。例如,您不會向https://gitlab.com/pdaw/test/raw/master/README.md發送XML請求,而是向https://my.app.com/fetch-file?file=pdaw/test/raw/master/README.md發送XML請求。在fetch-file行動的後端,您將獲取並返回原始數據https://gitlab.com/pdaw/test/raw/master/README.md

+0

這就是爲什麼我說這是他們的結局。也許如果我改變我的gitlab帳戶設置或smtg他們自動添加標題。無論如何,謝謝......看起來很奇怪,他們不允許它tbh。我不想通過他們的API只是爲了做到這一點 – Ced

+0

@Ced正如我所見,這個問題是嘮叨,例如https://gitlab.com/gitlab-org/gitlab-ce/issues/24596例如 –