chrome 浏览器中的 CORS Node.js
CORS Node.js in chrome browser
我正在使用 Heroku 和 netlify 来托管
现在我在后端使用 cors,需要在我的电脑上使用 chrome extension 打开它才能使卡片部分正常工作。
但不是每个人都知道通过扩展启用cors访问才能看到我的网站。那我要怎么做才能让大家直接看到呢
使用 npm cors package in your nodejs program, and place your netlify origin on the allowed list.
类似这样的方法可能有效。
const express = require('express')
const cors = require('cors')
const app = express()
var corsOptions = {
origin: 'https://n-blogcode.netlify.app'
}
...
app.use(cors(corsOptions)) //cors for all routes
app.options('*', cors()) //cors for preflight requests
这会导致您的 nodejs 程序在其对托管在 netlify 上的 html/js 代码的请求的响应中包含适当的 CORS headers。
您肯定不想为您的用户要求网络扩展。如果这样做,您将不会有很多用户。 :-)
在解决 CORS 错误之前,您必须了解它是如何工作的,引用自 IBM.com:
CORS is a mechanism that uses additional HTTP header to inform a
browser to allow a web application running at one origin (domain) have
permission to access selected resources from a server at a different
origin
考虑一个用于 ABC 银行的 API,黑客想要向此 API 发送一些请求,但是对于您的帐户,如果 CORS 不存在,黑客可以简单地编写一个恶意软件代码如下:
Axios.post("https://bankABC.com/api/MoneyTransfer?to=123456789");
并将此脚本放在 third-party 网站上。
当你打开那个网站时,黑客可以偷走你所有的钱!
但幸运的是,我们的浏览器实施了 CORS 机制以防止这种不受欢迎的 cross-domain 请求,要定义哪个源可以将请求发送到特殊路由,您必须在 Access-Control-Allow-Origin
header 在您的回复中 header。有一个名为 cors 的中间件,您可以使用它来定义此 header...
如果您想处理多个来源:
let whitelist = [
process.env.WEB_URL,
process.env.ROOT_API,
process.env.SOCKET_URL
]
let corsOptions = {
origin: (origin, callback) => {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Origin not allowed by CORS'))
}
}
}
app.use(cors(corsOptions))
我正在使用 Heroku 和 netlify 来托管
现在我在后端使用 cors,需要在我的电脑上使用 chrome extension 打开它才能使卡片部分正常工作。
但不是每个人都知道通过扩展启用cors访问才能看到我的网站。那我要怎么做才能让大家直接看到呢
使用 npm cors package in your nodejs program, and place your netlify origin on the allowed list.
类似这样的方法可能有效。
const express = require('express')
const cors = require('cors')
const app = express()
var corsOptions = {
origin: 'https://n-blogcode.netlify.app'
}
...
app.use(cors(corsOptions)) //cors for all routes
app.options('*', cors()) //cors for preflight requests
这会导致您的 nodejs 程序在其对托管在 netlify 上的 html/js 代码的请求的响应中包含适当的 CORS headers。
您肯定不想为您的用户要求网络扩展。如果这样做,您将不会有很多用户。 :-)
在解决 CORS 错误之前,您必须了解它是如何工作的,引用自 IBM.com:
CORS is a mechanism that uses additional HTTP header to inform a browser to allow a web application running at one origin (domain) have permission to access selected resources from a server at a different origin
考虑一个用于 ABC 银行的 API,黑客想要向此 API 发送一些请求,但是对于您的帐户,如果 CORS 不存在,黑客可以简单地编写一个恶意软件代码如下:
Axios.post("https://bankABC.com/api/MoneyTransfer?to=123456789");
并将此脚本放在 third-party 网站上。 当你打开那个网站时,黑客可以偷走你所有的钱!
但幸运的是,我们的浏览器实施了 CORS 机制以防止这种不受欢迎的 cross-domain 请求,要定义哪个源可以将请求发送到特殊路由,您必须在 Access-Control-Allow-Origin
header 在您的回复中 header。有一个名为 cors 的中间件,您可以使用它来定义此 header...
如果您想处理多个来源:
let whitelist = [
process.env.WEB_URL,
process.env.ROOT_API,
process.env.SOCKET_URL
]
let corsOptions = {
origin: (origin, callback) => {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Origin not allowed by CORS'))
}
}
}
app.use(cors(corsOptions))