首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs API部署后缺少“Acces-Control-API原产地”标头

在nodejs API部署后缺少“Acces-Control-API原产地”标头
EN

Stack Overflow用户
提问于 2022-01-07 15:34:11
回答 1查看 217关注 0票数 0

解决了的问题--这个问题来自我的起始脚本,它与一个旧版本的构建链接在一起,而我不记得更改它--这就是为什么我没有检查.因此,高速公路/cors包/ TS兼容性没有什么问题;)

我使用NodeJS、Express和TypeScript创建了一个API,并且在解决与CORS相关的问题时遇到了困难。我的API可以从以下域模式访问:https://api.domain.comhttps://www.front.domain.com前端。

当我尝试从前端登录时,我收到了以下错误:

CORS策略阻止从“

”从“https://api.domain.com/sessions/login”到“https://www.front.domain.com”对XMLHttpRequest的访问:对飞行前请求的响应不通过访问控制检查:请求的资源上不存在“访问控制-允许-原产地”报头。

当我在本地运行API时,就会出现“访问控制-允许-原产地”标题(我使用Postman检查它),并且错误并不存在。但是,当我部署API时,每个请求中都没有相同的标头,并且我得到了上面的错误消息。

我尝试过在OVH网络云和智能云上部署它,因为我在这两个服务上都有问题,所以我认为我的代码有问题,但我找不到它。

我的服务器代码如下(createServer.ts):

代码语言:javascript
复制
const createServer = () => {

    const app = express()

    app.use(cors({ credentials: true, origin: 'https://www.front.domain.com', methods: ["OPTIONS", "HEAD", "GET", "POST", "PUT", "DELETE"] }))
    app.use(express.json())
    app.use(cookieParser())
    app.use(deserializeToken)

    routes(app)
    return app

}

(app.ts)

代码语言:javascript
复制
const app = createServer()

app.listen(
    port,
    async () => {
        console.info(`API is running on: ${rootUrl}, port: ${port}`)
        await dbConnect()
    }
)

编辑:问题似乎来自于构建。在生成后,标题将被删除。这是我的tsconfig.json文件:

代码语言:javascript
复制
{
    "compilerOptions": {
        "outDir": "build",
        "target": "es6",
        "module": "commonjs",
        "esModuleInterop": true, 
        "forceConsistentCasingInFileNames": true, 
        "strict": true,
        "skipLibCheck": true
    }
}

建造前:

后建

EN

回答 1

Stack Overflow用户

发布于 2022-01-10 09:53:27

你查过你的检验员的飞行前要求了吗?它应该是一个选项请求,就在您使用相同URL的原始请求之前。

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

https://stackoverflow.com/questions/70623604

复制
相关文章

相似问题

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