带有jQuery getJSON的“ Access-Control-Allow-Origin”

时间:2018-07-05 06:14:33

标签: javascript jquery node.js cors

我知道在SO上不乏CORS个问题,但在这种情况下没有一个能对我有所帮助:

我想使用此jQuery代码段从localhost后端获取JSON数据:

var SERVER_URL = "http://127.0.0.1:8080";

$.getJSON(SERVER_URL,function(result){
    console.log("result is", result);
  $.each(result, function(i, field){
    $("div").append(field + " ");
      });
    });

使用以下简单节点静态文件服务器将代码段加载到index.html上并在http://localhost:3000/index.html上运行:

var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(3000, function(){
    console.log('Server running on 3000...');
});

但是在Chrome控制台中,我得到了:

Failed to load http://127.0.0.1:8080/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

我在Firefox中遇到了同样的问题。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

安装cors软件包

npm install cors

并像这样使用

var cors = require('cors');

const corsOptions = {
  methods: "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE",  // use to manage api cross origin error
  origin: '*'
}

OR

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})

运行此命令,它将打开新的镶边,并在此处运行您的代码

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

答案 1 :(得分:0)

您应该在服务器上设置标头android:layout_marginTop="your_value"。 您应该采取的方式取决于您的服务器端语言。

例如:PHP

Access-Control-Allow-Origin: *