javascript - 当 API 不允许 Access-Control-Allow-Origin 时该怎么办

标签 javascript jquery xmlhttprequest cors same-origin-policy

我对所有这些同源策略都快发疯了。

当我尝试向 Google Maps API 发出请求时,我没有遇到任何问题:

var jsonData = $.ajax({
        url:"http://maps.googleapis.com/maps/api/geocode/json?address=",
        dataType:"json",
        async:true,
        success: function(json){...}
}

我认为这是因为 Google Maps API 允许 Access-Control-Allow-Origin。但是,当我尝试使用 openls.geog.uni-heidelberg.de API 时,出现跨域错误:

var xmlData = $.ajax({
              type: "GET",
              url:"http://openls.geog.uni-heidelberg.de/route?"
              //dataType:"jsonp xml",
              dataType: "xml",
              async:true,
              crossDomain : true,
              success: function(xml){...}
}

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

我想我不明白的是,如果 openls API 不允许跨域,为什么可以直接从我的浏览器发出请求,只需键入 url,如:

http://openls.geog.uni-heidelberg.de/route?start=9.256506,49.240011&end=8.72083,49.7606&via=&lang=de&distunit=KM&routepref=Bicycle&weighting=Shortest&avoidAreas=&useTMC=false&noMotorways=false&noTollways=false&noUnpavedroads=false&noSteps=false&noFerries=false&instructions=false

但是我不能用 jquery 来做。我也尝试过 jsonp 解决方案,但它不适用于 xml。

知道发生了什么事吗?

最佳答案

我在本地运行的两个项目(Angular 应用程序和 Node.JS Web 服务)的交互引起的 CORS 问题上苦苦挣扎了太久

看看简短的简单解决方法:Chrome 的插件 AllowControlAllowOrigin。

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

只需将单选按钮从红色切换为绿色,就不会再有阻塞的请求、错误或警告! 我希望它能与您的 API 一起使用,当然它不是永久性解决方案,但这是避免在那些烦人的反复出现的问题上浪费时间的好方法。

关于javascript - 当 API 不允许 Access-Control-Allow-Origin 时该怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946513/

相关文章:

asp.net - 在服务器上修改时,JavaScript 文件不会在浏览器中重新加载

javascript - 如何使用 Push.js 将数据和变量传递到新页面

javascript - jQuery 获取段落内的数字,但不获取类中的数字

json - .NET CORE 3升级CORS和Json(cycle)XMLHttpRequest错误

php - 如何从 ePub 图书写入服务器

javascript - 正则表达式最多提供 2 个空格

javascript - 如何在对象中调用方法

javascript - react native textInput scrollView android

javascript - jQuery 改变元素是否有类

javascript - Angular JS SSL客户端身份验证