如何使用js跳过跨域请求web api的限制?
我在网上看到说这个跨域问题的解决方法:
1、用
jsp
或者
php
,反正是让服务端去访问这个
api
。
2、把这个
URL
放到一个
script
标签里加载。
难道就没有用js的ajax直接获取json数据的方法吗?
=====================
好吧,百度的
Geocoding
还是用第二种方法吧,跨域这个看来是解决不了了。
我还想问问,别的url api,比如天气的那个
http://apistore.baidu.com/astore/serviceinfo/1798.html?qq-pf-to=pcqq.discussion
这个怎么用上面第二种方法?
oyasumi
9 years, 8 months ago
Answers
1 的实质是代理,2 的实质是 JSONP,原理是: http://segmentfault.com/q/1010000002707387/a-1020000002707744
正常情况下要去除跨域限制只要设置 API 的 response header 的
Access-Control-Allow-Origin
(
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
)就好了,然而显然目前你没办法操控 API 的代码。但是又因为你给的这个接口不是 JSONP 接口,所以只能通过代理。控制台运行下面的代码试试:
var s = document.createElement("script");
s.src = "https://jsonp.afeld.me/?callback=hello&url=http%3A%2F%2Fapistore.baidu.com%2Fmicroservice%2Fweather%3Fcitypinyin%3Dbeijing";
document.body.appendChild(s);
function hello(data) {
alert( data.retData.weather );
}
CrosSea
answered 9 years, 8 months ago