首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nodejs jsonp -访问-控制-允许-源错误

nodejs jsonp -访问-控制-允许-源错误
EN

Stack Overflow用户
提问于 2015-08-12 13:38:13
回答 4查看 730关注 0票数 0

我很确定JSONP意味着没有跨域限制。我正在尝试使用节点和表达式创建一个JSONP服务。下面是简单的代码:

代码语言:javascript
运行
复制
self.routes['/portfolio'] = function(req, res) {
      // Website you wish to allow to connect
         res.jsonp({ "my": "object" });
};

当我这么做时:

代码语言:javascript
运行
复制
$.getJSON('http://127.0.0.1:8080/portfolio', function(data){ console.log(data)});

我知道这个错误。

XMLHttpRequest无法加载http://127.0.0.1:8080/portfolio。“访问控制-允许-原产地”标题的值“http://127.0.0.1:8080/portfolio”与所提供的源不相等。因此,“http://api.jquery.com”源是不允许访问的。

有人能解释一下这是怎么回事吗?如果这是JSONP,为什么我们需要提供头值。我如何使这个工作跨域?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-12 13:43:32

$.getJSON不将请求视为JSONP,除非请求URL包含类似于callback=?的字符串。

所以,试着去做吧;

代码语言:javascript
运行
复制
$.getJSON('http://127.0.0.1:8080/portfolio?callback=?', function(data){ console.log(data)});
票数 3
EN

Stack Overflow用户

发布于 2015-08-12 13:45:56

实际上,您只需添加?callback=?,剩下的由jQuery来完成。

代码语言:javascript
运行
复制
  $(document).ready(function() {
        $.getJSON('http://127.0.0.1:8080/portfolio?callback=?', function(data) {
            console.log(data);
        });
    });

来源:http://api.jquery.com/jQuery.getJSON/

票数 1
EN

Stack Overflow用户

发布于 2015-08-12 13:46:05

将下面的代码放入app.js或server.js中

/*************To允许访问跨域请求*/

代码语言:javascript
运行
复制
   app.all('*', function(req, res, next) {
           res.header('Access-Control-Allow-Origin', '*');
           res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
           res.header('Access-Control-Allow-Headers', 'Content-Type');
           next();
   });

   /*************To Allow access to cross domain request *************/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31966897

复制
相关文章

相似问题

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