首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >whateverorigin.org _ YQL _ CORS不工作

whateverorigin.org _ YQL _ CORS不工作
EN

Stack Overflow用户
提问于 2017-06-14 04:16:52
回答 1查看 437关注 0票数 0

我试过这三种方法,但由于某种原因,它们会导致跨域访问被拒绝。我在我的应用程序中的不同地方使用了YQL,但现在它也不起作用。

JSFIDDLE

代码语言:javascript
代码运行次数:0
运行
复制
<script>
$(function() {
    $.getJSON('http://www.whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
        alert(data.contents);
    });
});

</script>

<div id="output"></div>

能工作或更可靠的替代方案吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-14 04:33:13

您要访问的API很可能没有启用CORS。

您可以考虑在请求AJAX请求中使用JSONP。

代码语言:javascript
代码运行次数:0
运行
复制
$.ajax({ 
  type: "GET",
  url: 'http://www.whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?',
  dataType: 'jsonp',
  success: function(data) { alert(data.contents); }
})

另一种方法不是通过客户端直接解决方案,而是创建一个通过路由执行API请求的服务器。服务器将充当代理,这样您就可以对服务器执行AJAX调用,从而对正在执行GET请求的端点执行API调用。当然,您必须在此代理服务器上启用CORS。

在node.js里它看起来就像.

代码语言:javascript
代码运行次数:0
运行
复制
const express = require('express')
const axios = require('axios')
const cors = require('cors')
const app = express()

app.use(cors())
app.get('/nameofroute', (req, res) => {
  axios.get('http://www.whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?'
}).then(response => res.json(response))
  .catch(err => res.json(err))
}

app.listen(8080, () => { console.log('listening on:8080') }

在前端,您将对刚才创建的服务器执行API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44535324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档