[問題] api串接與跨域問題(已解決)

作者: BOMBGUY (嘣嘣嘣)   2018-11-15 14:05:21
初學前端兩個月,想試試看從氣象局api串接資料(JSON)來玩玩。
有金鑰已經取得url,可是遇到跨域的問題,上網找了許多解決方法,
不過似乎很多都要需要後端配合?最後找到了jsonp這個方法。
1.
創建一個script用src屬性傳入,但是又出錯了:
Cross-Origin Read Blocking (CORB) blocked cross-origin response
(我的URL) with MIME type application/json.
這個error的意思是因為我檔案格式是JSON所以不能引入嗎?
2.
我試過的第二個方法是直接用jquery以jsonp的方式取得:
$.ajax({
url: api,
type: "GET",
dataType: "jsonp",
success: function (data) {
console.log(data);
},
error: function(){
alert("false")
}
});
又是出現一樣的error
3.
唯一成功的方法是安裝google的小套件: allow-control-allow-origin: *
並把上面的dataType改成json就能成功。但覺得有點旁門左道哈哈哈
請問版上各位高手應該怎麼解決這個問題呢?
希望能盡量以純前端解決這個問題(小弟只會前端語言QQ)
作者: kyrc (橘子)   2018-11-15 14:44:00
作者: ssccg (23)   2018-11-15 14:52:00
不是怎麼解決這問題,而是你不該這麼做
作者: pm2001 (做個盾牌眼球兵吧)   2018-11-15 17:48:00
後端唯一解
作者: vi000246 (Vi)   2018-11-15 18:16:00
我記得google已經把前端跨域的各種方式都擋死了這是client端的問題 你的瀏覽器幫你擋的
作者: shter (飛梭之影)   2018-11-15 23:47:00
我串火車的 ptx API 倒沒碰過這種問題但是串接這種資料不應該用 Script src 弄進來吧用var xhr = new XMLHttpRequest()再 xhr.open('GET', url)
作者: taitzyhwan (資本主義)   2018-11-16 00:24:00
後端要設定允許跨域的網域
作者: inxbone (高級少量糖果)   2018-11-16 12:29:00
同五樓所說安全性問題 瀏覽器擋掉了 唯一解就是後端回傳的表頭宣告允許 如果你只是練習用你原本的插件就夠了

Links booklink

Contact Us: admin [ a t ] ucptt.com