跨域API调用
Cross domain API call
我正在尝试用JavaScript进行跨域API调用。
我已经用JSONP尝试了angular的$http,但API服务器不支持JSONP,只支持json。使用JSONP,我得到一个"意外的令牌"错误。Fiddler显示请求成功并获得正确的json对象。有没有办法绕过错误,获得fiddler得到的东西?
作为一种替代方案,我尝试了使用XMLHttpRequest的CORS,如下所述。请求失败,通常显示"请求的资源上不存在"Access Control Allow Origin"标头。"。然而,Fiddler显示请求是成功的,返回代码为200。
我一点也不明白。为什么fiddler说返回代码是200,但CORS调用失败了?
此外,我可以在浏览器(firefox和chrome)中访问API url,而不会出现问题。API是公开的,不需要授权。
我一点也不明白。为什么fiddler说返回代码是200,但CORS调用失败了?
因为是浏览器强制执行SOP。所以你提出请求,服务器发回响应,浏览器查看响应并说:"不,我不允许给这个代码这个响应。"
如果另一端不支持来自您的源的CORS请求,并且他们不支持JSONP,则您必须通过代理:例如,如果您的解决方案有服务器,则将您的请求发送到服务器,并让您的服务器从远程API请求数据,然后将其发送回您。
此外,我可以在浏览器(firefox和chrome)中访问API url,而不会出现问题。
这是因为当您在地址栏中输入地址时,您不会发出ajax请求,SOP也不适用。
API是公开的,不需要授权。
联系他们,询问他们是否支持CORS或JSONP,您只是在启用它的文档中遗漏了一些内容。但请注意,有几个公共API可能是公开的,但不支持CORS和JSONP。它们可能用于桌面或服务器,而不是ajax。
- JQuery-重新加载Div并在点击时调用API
- 需要帮助调用API
- Froogaloop Vimeo API--Can't在就绪事件之外调用API方法
- Javascript:如何通过HTTPS和AJAX调用API
- 同步代码框 - 调用 API - 解析 JSON - 获取引用 - 保存新对象
- 为什么如果失败,我无法保留调用 api
- Cloudinary - 通过直接调用 API 上传,缺少文件
- 用户完成键入后,调整keyup事件以调用API
- 调用API中的API-jQuery/HHandlebars
- 当使用AJAX调用API时,网站在打开后重定向到index.php
- 在哪里调用API MVC模式
- 无法在JavaScript中调用api(跨源)
- Ajax没有在framework7的构建版本中调用API
- 如何使用node.js调用API,并在主体中包含JSON字符串
- 从CouchDB设计文档调用API
- 在路由器上点击时调用API
- 美元.试图调用API时出现错误
- AngularJS:服务调用API并返回JSON
- 如何在成功安装Firefox插件时调用API url
- 在后台调用API key,在WebExtension中调用内容脚本