Ajax에서 Same-Origin Policy를 넘어 XML WebAPI 및 RSS 정보를 얻습니다.
하고 싶은 일
WebAPI를 두드리고 싶다. Yahoo! JAPAN 일본어 형태소 해석 API
RSS를 로드하고 싶습니다. Yahoo! 뉴스 RSS
//불행히도 Yahoo! 뉴스 API는 없습니다 ...
이것을 빨리 Ajax에서 하고 싶다.
주로 해커슨이나 해커슨이라든지 우선은 아이디어를 형태로 하는 것이 중요할 때.
슬픈 일
이 녀석들 XML 밖에 돌려주지 않는다. (RSS는 원래 그런 것입니다만)
=> Same-Origin Policy에서 이끼
슬픈
피해 보았다.
일본어 형태소 분석 API
복사하고 YOUR_APP_ID
를 다시 쓰고 브라우저에 던지면 이런 느낌.
잡혔다!
Yahoo! 뉴스 RSS
RSS 중에서 주제를 선택하여 URL 교체
diff --git a/call_webapi_which_return_xml_with_ajax.html b/call_webapi_which_return_xml_with_ajax.html
index 822831e..af8c10b 100644
--- a/call_webapi_which_return_xml_with_ajax.html
+++ b/call_webapi_which_return_xml_with_ajax.html
@@ -20,14 +20,7 @@
$.ajax({
// [NOTE] 使いたいAPIのURI, ここではYahoo! JAPAN 形態素解析API
// http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
- url: 'http://jlp.yahooapis.jp/MAService/V1/parse',
- data: {
- // [NOTE] APIに渡したいパラメータ
- // APPIDはhttps://e.developer.yahoo.co.jp/dashboard/ から取得
- "appid": "<YOUR_APP_ID>",
- "results": "ma,uniq",
- "sentence": "庭には二羽ニワトリがいる。"
- },
+ url: 'http://news.yahoo.co.jp/pickup/rss.xml',
type: 'GET',
dataType: "xml",
cache: false, // キャッシュOFF
잡혔다!
사용한 것
이 녀석들 XML 밖에 돌려주지 않는다. (RSS는 원래 그런 것입니다만)
=> Same-Origin Policy에서 이끼
슬픈
피해 보았다.
일본어 형태소 분석 API
복사하고 YOUR_APP_ID
를 다시 쓰고 브라우저에 던지면 이런 느낌.
잡혔다!
Yahoo! 뉴스 RSS
RSS 중에서 주제를 선택하여 URL 교체
diff --git a/call_webapi_which_return_xml_with_ajax.html b/call_webapi_which_return_xml_with_ajax.html
index 822831e..af8c10b 100644
--- a/call_webapi_which_return_xml_with_ajax.html
+++ b/call_webapi_which_return_xml_with_ajax.html
@@ -20,14 +20,7 @@
$.ajax({
// [NOTE] 使いたいAPIのURI, ここではYahoo! JAPAN 形態素解析API
// http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
- url: 'http://jlp.yahooapis.jp/MAService/V1/parse',
- data: {
- // [NOTE] APIに渡したいパラメータ
- // APPIDはhttps://e.developer.yahoo.co.jp/dashboard/ から取得
- "appid": "<YOUR_APP_ID>",
- "results": "ma,uniq",
- "sentence": "庭には二羽ニワトリがいる。"
- },
+ url: 'http://news.yahoo.co.jp/pickup/rss.xml',
type: 'GET',
dataType: "xml",
cache: false, // キャッシュOFF
잡혔다!
사용한 것
diff --git a/call_webapi_which_return_xml_with_ajax.html b/call_webapi_which_return_xml_with_ajax.html
index 822831e..af8c10b 100644
--- a/call_webapi_which_return_xml_with_ajax.html
+++ b/call_webapi_which_return_xml_with_ajax.html
@@ -20,14 +20,7 @@
$.ajax({
// [NOTE] 使いたいAPIのURI, ここではYahoo! JAPAN 形態素解析API
// http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
- url: 'http://jlp.yahooapis.jp/MAService/V1/parse',
- data: {
- // [NOTE] APIに渡したいパラメータ
- // APPIDはhttps://e.developer.yahoo.co.jp/dashboard/ から取得
- "appid": "<YOUR_APP_ID>",
- "results": "ma,uniq",
- "sentence": "庭には二羽ニワトリがいる。"
- },
+ url: 'http://news.yahoo.co.jp/pickup/rss.xml',
type: 'GET',
dataType: "xml",
cache: false, // キャッシュOFF
보충
Q. 어떻게 하는 거야
YQL 라고 하는 Web 자원을 SQL 라이크에 취득할 수 있는 플랫폼이 있어 백엔드를 경유하는 형태가 되므로 Same-Origin Policy 관계 없게 된다.
jquery.xdomainajax.js가 jQuery의 ajax 메소드를 YQL을 통과하도록 래핑합니다.
json이거나 get 메소드가 아닌 경우 래핑하지 않는 ajax 메소드가 호출됩니다.
jquery.xdomainajax.js#L29
Q. 왜 jQuery?
처음에 이 문제에 직면하고 있던 코드가 jQuery 사용하고 있었기 때문에.
YQL의 엔트리 포인트에 URL을 던지면 좋기 때문에 자전 구현도 충분히 가능.
Q. gist는 도서관?
라이브러리가 아닙니다. 거의 "jquery.xdomainajax.js를 사용해 보았습니다."
Q. 다른 API에서도 사용할 수 있습니까?
url과 data를 다시 쓰면 무엇이든 사용할 수 있을 것이다. 적어도 get 메소드라면.
Q. CORS라던가
서버 측이 대응하지 않으면 안되고, 원래 그런 생각을 하고 싶지 않은 때용.
요약
YQL을 래핑한 jquery.xdomainajax.js에서 Same-Origin Policy 문제를 피해 보았습니다.
성실하게 만드는 서비스로 사용할 수 있을지는 어쨌든, 우선은 움직이고 싶다고 때로는 도움이 되지 않을까.
Reference
이 문제에 관하여(Ajax에서 Same-Origin Policy를 넘어 XML WebAPI 및 RSS 정보를 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kotatsu360/items/c5fd46484f3e6d24b754
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
YQL을 래핑한 jquery.xdomainajax.js에서 Same-Origin Policy 문제를 피해 보았습니다.
성실하게 만드는 서비스로 사용할 수 있을지는 어쨌든, 우선은 움직이고 싶다고 때로는 도움이 되지 않을까.
Reference
이 문제에 관하여(Ajax에서 Same-Origin Policy를 넘어 XML WebAPI 및 RSS 정보를 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kotatsu360/items/c5fd46484f3e6d24b754텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)