iT邦幫忙

1

跨網域 No 'Access-Control-Allow-Origin' header 的問題

想請教各位大大!最近需要做跨網域索取資料的功能。

需要介接下方網站!
https://alerts.ncdr.nat.gov.tw/RSS.aspx

但是每次送出請求時都會有 下圖錯誤訊息。

https://ithelp.ithome.com.tw/upload/images/20180724/2010586588ZeMu8XvJ.jpg

$.ajax({  
    url: "https://alerts.ncdr.nat.gov.tw/JSONAtomFeeds.ashx",  
    method:"GET",
    crossDomain: true,
    dataType:'json',
    headers: {

            'Access-Control-Allow-Origin': '*'

    },
    success:function(data){ 
      console.log(data);

    },
}) 

不知道我這樣加入 header 是不是正確的方法。但是嘗試此段程式碼,還是無法正常取的資料。

看更多先前的討論...收起先前的討論...
關於header可以參考看看以下文章:
https://stackoverflow.com/questions/10093053/add-header-in-ajax-request-with-jquery

似乎要改成
beforeSend: function(request) {
request.setRequestHeader("Access-Control-Allow-Origin","*" );
},
或是更下面也有人說改成單引號就可以了,大大可以試看看!
小魚 iT邦高手 1 級 ‧ 2018-07-24 12:00:20 檢舉
 
fysh711426 iT邦研究生 4 級 ‧ 2018-07-24 13:09:47 檢舉
對方的網站不讓其他網站(不同網域)用 ajax 抓資料,
如果不能修改對方的程式,只能用後端做中繼,
ajax 呼叫自己的 ashx,再由 ashx 去呼叫對方的 ashx ,哈哈哈。

補充: 後端可以用 WebClient 或 HttpWebRequest 去呼叫對方。
Homura iT邦高手 2 級 ‧ 2018-07-25 09:20:48 檢舉
fysh711426w提供的方法還不錯

1 個回答

2
純真的人
iT邦高手 1 級 ‧ 2018-07-24 11:51:26
最佳解答

不正確....@@
那個是要加在被你讀取的那頁才可以~
例如A頁要讀取B頁~
那你的B頁標頭檔就要加上Access-Control-Allow-Origin

'跨網域
Response.AddHeader("Access-Control-Allow-Origin", "*")

不然你就是要靠後端php或aspx語法去抓遠端資料~

k1031616 iT邦新手 5 級 ‧ 2019-02-01 11:19:24 檢舉

目前是不想用後端來做...
想在前端完成他,這樣還有其他方法嗎!?

k1031616 iT邦新手 5 級 ‧ 2019-02-01 11:20:49 檢舉

抱歉...
我回錯版面了!

我要發表回答

立即登入回答