鍍金池/ 問答/HTML/ 關(guān)于ajax請求和跨域疑惑

關(guān)于ajax請求和跨域疑惑

在谷歌瀏覽器下,打開編寫好的本地html,這個html有$.ajax請求,請求的url是遠處的服務(wù)器,之前都是可以發(fā)起ajax請求的,都不會出現(xiàn)如下圖所示的情況:
clipboard.png
我試過--allow-file-access-from-files但是不起作用,包括用cmd命令重啟電腦都沒效果,這個報錯是不是說我跨域了?那我之前為什么都可以呢?這就是讓我感到困擾的地方,下午試的時候不知道按到什么,突然又可以發(fā)起請求了,但是一會又不行了直到現(xiàn)在...
還有就是我用ajax請求的url是遠處的服務(wù)器那我是不是就是跨域了呢?xhr不是客戶端向服務(wù)器發(fā)起請求嗎,那這樣,本地客戶端和服務(wù)器不是就是兩個域了,是不是瀏覽器的自帶的cors解決這個問題?那我為什么還會出現(xiàn)這種情況

回答
編輯回答
尐飯團

關(guān)鍵還看你的遠端接口是不是始終沒發(fā)生改變,跨域光靠前端自己是無法解決的,除非你設(shè)置一臺代理服務(wù)器,本地開發(fā)可以在本地安裝nginx

2018年3月29日 04:10
編輯回答
尐飯團

其實跨域是服務(wù)器的一種安全策略, 主要是為了防止 不是服務(wù)器容許的地址或者域來訪問服務(wù)器.
解決方案:

    1. 后臺設(shè)置允許 你的域名或者直接*.
    2. 如果你用了webpack的話 它自帶代理, 就是把你本地訪問代理到你要訪問的那個服務(wù)器上.
    3. nginx的反向代理 應(yīng)該也是可以的 不過我沒有用過 你可以查一下資料試試.
    4. $ajax中有jsonp 模式可以解決跨域問題
       
2017年8月8日 13:22
編輯回答
法克魷

這是很明顯的跨域問題,一般都是靠后端去解決的,如果你想通過前端的話,上面兩位的解決方法也可用,我推薦使用gulp或者webpack開啟本地服務(wù)器去管理你的頁面,然后在配置中設(shè)置代理服務(wù)即可,非常方便,jsonp只可以解決get方法的請求,對post沒辦法的,所以還是設(shè)置代理服務(wù)最靠譜。

2018年5月11日 02:40