- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有这个错误
XMLHttpRequest cannot load http://127.0.0.1:1337/. Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. Origin 'http://localhost:63342' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
我在这里阅读了一些主题,但还没有找到适合我的解决方案。也许我只是不明白这一切是如何运作的。但是,我该如何解决这个问题?提前谢谢你。
const Koa = require('koa')
const Router = require('koa-router')
const koaBody = require('koa-body')()
const router = new Router({})
const koaCors = require('koa-cors')
router
.post('/', koaBody, async function (ctx) {
console.log(ctx.request.body)
ctx.status = 200
ctx.body = 'POST'
})
.get('/', async function (ctx) {
ctx.status = 200
ctx.body = 'GET'
})
exports.createServer = function () {
const app = new Koa()
app
.use(router.routes())
.use(router.allowedMethods())
.use(koaCors())
app.listen(1337)
}
exports.createServer()
function submitForm(form) {
let xhr = new XMLHttpRequest()
xhr.withCredentials = true;
xhr.open('POST', 'http://127.0.0.1:1337/', true)
xhr.setRequestHeader('Access-Control-Allow-Origin', '*')
let formData = new FormData(form)
let body = {
name: formData.get('name'),
password: formData.get('password'),
message: formData.get('message')
}
xhr.onreadystatechange = function() {
if(xhr.status == 200) {
alert('Hello!')
} else {
alert('Something went wrong')
}
}
xhr.send(JSON.stringify(body))
}
$(document).ready(function () {
$('#form').submit(function (event) {
event.preventDefault();
if (validateForm($form)) {
$('#modal-form').modal('hide');
submitForm($form)
}
return false;
})
});
更新:
我希望修复服务器端。我的 index.js 现在:
function submitForm(form) {
let xhr = new XMLHttpRequest()
xhr.withCredentials = true;
xhr.open('POST', 'http://127.0.0.1:1337/', true)
xhr.setRequestHeader('Access-Control-Allow-Origin', '*')
let formData = new FormData(form)
xhr.onreadystatechange = function() {
if(xhr.status == 200) {
alert('Hello!')
console.log(xhr.response);
} else {
alert('Something went wrong')
}
}
xhr.send(formData)
和 server.js:
router
.post('/', koaBody, function (ctx) {
console.log(ctx.request.body)
ctx.status = 200
ctx.body = 'POST'
})
.get('/', function (ctx) {
ctx.status = 200
ctx.body = 'GET'
});exports.createServer = function () {
const app = new Koa()
const koaOptions = {
origin: true,
credentials: true
};
app
.use(router.routes())
.use(router.allowedMethods())
.use(cors(koaOptions))
app.listen(1337)}
再次 请求的资源上不存在“Access-Control-Allow-Origin” header 。
现在我做错了什么?
最佳答案
The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'.
为防止该问题,您需要设置 koa-cors credentials
选项:
exports.createServer = function () {
const app = new Koa()
const koaOptions = {
origin: true,
credentials: true
};
app
.use(router.routes())
.use(router.allowedMethods())
.use(koaCors(koaOptions))
app.listen(1337)
}
关于javascript - koa-cors 和 Access-Control-Allow-Credentials 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46755800/
我正在使用 koa.js 开发节点服务器 我已经为 body 解析器寻找了一些库。 并且有好几种koa body parser。 但我不知道它们有什么区别,包括 koa-body和 koa-bodyp
我正在尝试使用 Koa.js,并检查了以下用于路由请求的模块:1.koa路线2. koa 挂载 当我在谷歌中查看他们的 github 页面/教程时,这些示例看起来几乎相似,只有细微差别。 对于 koa
假设我想在不使用扩展程序的情况下将一个简单的变量发布到 Koa 应用程序,我该怎么做? 最佳答案 您必须使用官方 koa-bodyparser 模块。 然后所有 POST参数将在 this.reque
抱歉,我不太明白 key 在 koa 中是如何工作的。在 koa 中,有keys字段上 app将像这样使用的对象: const app = new Koa(); app.keys = ['some s
我们为什么要做这个 router.get('/data', async (ctx, next) => { ctx.body = dummyjson.parse(data); await nex
这就是我的想法,伪代码。 const myRedirect = (routePath) => { newUrl = routePath; if (matches condition)
应用程序.js var bodyParser = require('koa-bodyparser'); app.use(bodyParser()); app.use(route.get('/objec
如何使用 koa-router 进行嵌套路由重定向? app.js: var router = require('koa-router')(); var route1 = require('./rou
我尝试使用该模块为 Koa 服务器建立 HTTPS 连接 https://www.npmjs.com/package/koa-sslify但我收到错误“AssertionError:app.use()
我有一个非常简单的服务器可以使用: import * as http from 'http'; import * as Koa from "koa"; import { Request, Respon
从用户代理进行 ajax POST $.ajax({ type: 'POST', url: 'https://mysub.domain.dev/myro
我试图从我们的 React 客户端上传一个大约 1.5 mb 的 JSON 对象到我们的 Koa.js node.js 服务器。 我将 Koa.js 与 koaBody(koa-body 4.1.1)
我正在潜入Koa2并看到koa-compose。我得到了我给它的中间件,并且它返回了一个,但是为什么呢?将多个中间件包装为一个而不是单独添加它们有什么好处? app.use(compose(m1, m
我正在尝试 Koa.js,并且正在寻找一种关于生成器返回错误处理的最佳实践(如果有的话)。采取以下措施: var sql = require('./lib/sql'); app.use(functio
通常,登录用户会获得内容类型的所有条目。 我创建了一个“代码段”内容类型(_id,name,content,users>snippets)>表示“具有并属于许多”关系。 我创建了一些测试用户并提出了一
在我的app.js中,我有以下内容... app.use(async (ctx, next) => { try { await next() } catch (err) { c
我在导出路线时遇到了一个奇怪的问题。由于某种原因,这段代码对我有用: app.js import Koa from 'koa' import routes from './routes/index'
我想将一些环境变量从 Koa 服务器传递到客户端。在 Express 中,我可以执行类似 res.render('index', { data: 'someData' }); 的操作,然后我可以访问
这是代码片段: //Category.service.js ... exports.update = async (ctx, next) => { const {categoryId} = ctx
我是 node 和 koa 的新手,所以请原谅我的愚蠢。 我不确定我是否搞砸了。但我想将 Koa 与 OrientDB 一起使用。我可以使用 Oriento(Node 的模块)连接到 OrientDB
我是一名优秀的程序员,十分优秀!