首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Koa + XMLHttpRequest:在请求的资源上没有“访问-控制-允许-原产地”标头

Koa + XMLHttpRequest:在请求的资源上没有“访问-控制-允许-原产地”标头
EN

Stack Overflow用户
提问于 2019-06-10 11:58:55
回答 1查看 969关注 0票数 0

我在Heroku上部署了简单的koa服务器,并使用XMLHttpRequest实现ajax。在我的帖子请求中,我收到了错误消息:

代码语言:javascript
复制
Access to XMLHttpRequest at 'https://upload-file-endpoint.herokuapp.com//upload-file' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

server.js

代码语言:javascript
复制
const Koa = require('koa');
const Router = require('koa-router');
const cors = require('@koa/cors');
const serve = require('koa-static');
const path = require('path');
const koaBodyMultipart = require('koa-body')({ multipart: true });

var corsOptions = {
  origin: '*'
};

const app = new Koa();
app.use(cors(corsOptions));
app.use(serve(path.join(process.env.PWD, '/dist')));

const router = new Router();

router
  .post('/upload-file', koaBodyMultipart, (ctx, next) => {
    const { file } = ctx.request.files;
    if (file) {
        ctx.response.body = ctx.request.body;
    } else {
        ctx.throw(500,'Error Message');
    }
  })
  .post('/upload-file-error', koaBodyMultipart, (ctx, next) => {
    ctx.throw(500,'Error Message');
  });

app.use(router.routes()).use(router.allowedMethods());

// don't listen to this port if the app is required from a test script
if (!module.parent) {
  var server = app.listen(process.env.PORT || 1337);
  var port = server.address().port;
  console.log('running at port:' + port)
}

ajax post请求

代码语言:javascript
复制
var file = fileUpl.getFile();
const xhr = new XMLHttpRequest();

xhr.open("POST", "https://upload-file-endpoint.herokuapp.com//upload-file", true);
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
var formData = new FormData();
formData.append("file", file);
xhr.send(formData);

我正在使用@koa/cors库。我尝试用和不使用cors来初始化corsOptions

package.json

代码语言:javascript
复制
"dependencies": {
    "@koa/cors": "^3.0.0",
    "koa": "^2.7.0",
    "koa-body": "^4.1.0",
    "koa-router": "^7.4.0",
    "koa-send": "^5.0.0",
    "koa-static": "^5.0.0"
  },
  "devDependencies": {
    "nodemon": "^1.19.1"
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 07:32:51

当我现在试一试的时候,它就起作用了。服务器部署在Heroku上。

我加了

代码语言:javascript
复制
var corsOptions = {
  origin: '*'
};

当它部署到Heroku的时候,我可能没等过。

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

https://stackoverflow.com/questions/56525973

复制
相关文章

相似问题

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