我正在構建一個React/Express/Node應用程序,並試圖向Instagram發出AJAX請求。不幸的是,我一直運行到一個錯誤,當我這樣做:AJAX調用應該在服務器上?
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
但我已經把我的頭
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, accept');
res.setHeader('Access-Control-Allow-Credentials', true);
雖然我曾嘗試在本地做這些要求,我也已經部署了Heroku的,也試圖使用https(而不是http)url。但是,我仍然收到同樣的錯誤。
所以出於某種原因,這是不允許的。我想這是不可能的(如果是這樣,請讓我知道)。此外Instagram的對您的應用程序設置此選項:
[]禁用隱含的OAuth
禁用客戶端(隱含的)的OAuth網絡應用程序的流量。如果您選中此選項,則Instagram只會允許使用服務器端(顯式)OAuth流的授權請求來更好地保護您的應用程序。服務器端流量被認爲更安全。詳細信息請參閱身份驗證文檔。
那麼,我應該有用戶點擊一個按鈕,將請求發送給我的後端,使我的後臺Ajax請求,當我收到響應,然後給它回前端?這似乎令人費解,但上面的消息使得這聽起來像是更安全。但它需要更多的網絡請求。什麼是最好的?
最後一段描述瞭如果API不支持CORS或jsonp時需要的代理。自己設置標題是沒用的...遠程服務器需要設置它們 – charlietfl
最後一段是什麼? – jro
您的問題的最後一段 – charlietfl