我有一个react应用程序在localhost:3000上运行,localhost:8000上有一个nodeJS express服务器,我需要向jsreport API发送POST请求,但当我尝试发送请求时,出现以下错误:
访问位于“”的XMLHttpRequesthttp://localhost:5488/api/report“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:响应中的'access control Allow Credentials'标头的值为',当请求的凭据模式为'include'时,该值必须为'true'。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制。
后请求:
axios.defaults.withCredentials = true;
axios.post('http://localhost:5488/api/report',
{withCredentials: true, crossorigin: true},
{
"template": {
"content": "<h1>Hello {{foo}}</h1>",
"engine": "handlebars",
"recipe": "chrome-pdf"
},
"data": {
"foo": "world"
}
}).then((response)=> {
fs.writeFileSync('/reports/report.pdf', response.content)
}).catch(function (error) {
console.log('AXIOS error: '+ error);
return 'errorReport'
})
Server.js:
var corsOptions = {
origin: 'http://localhost:3000',
credentials : true
}
app.use(cors(corsOptions));
app.use((req, res, next) => {
res.header('Access-Control-Expose-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Credentials", true);
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
const err = new Error('Not Found');
err.status = 404;
next(err);
})
我不明白如果我在axios中使用.withCredentials并在服务器中建立了标头和cors配置,为什么凭据是空的。
我已经摆弄了一段时间的持久用户会话,在将passport/passport-local
(用于身份验证)、mongoose、express-session
和connect-mongo
(用于在mongo中存储会话)串在一起时遇到了问题。
@mshibl comment帮助我更进一步,为express
设置这些cors
选项,最终使cookies
被正确传递。希望这能帮助其他有类似问题的人
app.use(cors({
credentials: true,
origin: "http://localhost:3000"
}));
更新Server.js如下
var corsOptions = {
origin: 'http://localhost:3000',
credentials : true
}
app.use(cors(corsOptions));
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
我使用了下一个代码而不是axios请求,它起作用了:
fetch('http://localhost:5488/api/report', {
method: 'POST',
body: JSON.stringify(data),
headers:{
'Content-Type': 'application/json'
},
credentials: "same-origin",
}
将凭据设置为“同一来源”修复了这个问题,但由于我想使用jsreport,我找到了一个包,使这一过程更容易,而无需使用fetch或axios。
import jsreport from 'jsreport-browser-client-dist'
jsreport.serverUrl = 'http://localhost:5488'
jsreport.render(document.getElementById('reportPlaceholder'), data)
使用jsReport方法,我可以在反应组件中显示我的报告
<div id="reportPlaceholder">
<p>there should be a report here...</p>
</div>
我正在从主机(http://abc.com.au)向主机http://localhost:8081上运行的Spring Cloud API网关发送ajax请求。 jquery AJAX请求代码。 SimplifiedAdoptionBulkUpload.jsp spring cloud gateway cors配置。 我在chrome控制台中遇到以下错误。 SimplifiedAdoptionBu
我正在尝试向RESTAPI发送评论。rest API已经为我的应用程序地址设置了CORS。。 后端 但我得到了 加载失败http://localhost:8999/api/comment: 对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。起源'http://localhost:8000因此,不允许访问。XMLHttpR
一、 am在angular 6和asp.net内核上使用信号器功能。但对飞行前请求继续获取此错误响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。 做了一些研究,发现这是服务器端的CORS问题。所以修改了服务器代码。 startup.cs 角度应用程序 参考资料 访问控制允许原点-角度5 响应中的访问-控制-允许-凭据标题为"这必须是
我在后端使用spring boot服务,在前端使用angular 6。 在spring boot中,我使用启用了cors。 并且我正在为每个服务使用拦截器。 在前端呼叫服务中: 如果使用拦截器,我会得到以下异常。如果不使用隔膜,我不会得到cors错误。 加载失败http://localhost:7070/example/myservice:飞行前响应中的访问控制允许标头不允许请求标头字段访问控制允
在制作MMORPG项目的过程中,我正在学习服务器-客户端通信。 *更新:服务器端代码已编辑。 这是服务器端代码。 这是客户端代码 当调用login()函数时,finch()函数将此消息抛出到浏览器控制台。(http://localhost:4000/login)是服务器端,(http://localhost:8000)是客户端。 我尝试了许多不同的方法来修复它,但没有得到好的结果。
我正在创建一个单页应用程序使用sails.js和reactjs,并使用JWT作为受保护请求的身份验证。在登录过程中,登录请求按预期工作,并能够成功登录。之后,当我试图用无记名请求其他请求时,浏览器显示以下错误消息。 从源访问位于“http://localhost:1337/monitoring URL”的XMLHttpRequest 以下是我在帆config/security.js中的cors设置