【发布时间】:2020-03-12 15:16:09
【问题描述】:
我遇到了关于从 devextreme odatastore 中删除实体的问题。
我在本地有两个项目,后端项目在 localhost:54602 上运行,前端项目在 localhost:3000 上运行(react app)
我能够在没有 CORS 问题的情况下请求数据。 (CORS 设置在后端进行)
但是当我尝试从 ODataStore 中删除一个实体并在调试模式下查看后端时
context.User.Identity.IsAuthenticated 变量更改为 false。请求失败。
Chrome 控制台输出在这里
从源“http://localhost:3000”访问“http://localhost:54602/units(3)”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。
我阅读了有关that link about CORS Preflight的所有信息
我的 CORS 设置在这里。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
.
.
.
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
.
app.UseCors(options =>
{
options.WithOrigins("http://localhost:3000")
.WithMethods("GET", "POST", "PUT", "PATCH", "POST", "DELETE", "OPTIONS")
.AllowAnyHeader()
.AllowCredentials();
}
);
.
}
在反应应用程序中,我正在创建这样的 oDataStore
export default class extends React.Component {
.
.
oDataStore = new ODataStore(
{
key: 'Oid',
version: 4,
url: 'http://localhost:54602/units',
withCredentials : true
});
.
.
}
最后像这样删除调用。
this.oDataStore.remove(this.state.selectedUnit.Oid).then(
(key) => {
alert(`${key} will be delete.`);
},
(error) =>
{
alert(`${error} occured.`);
}
);
我们会接受任何帮助。期待您的回复。
祝你有美好的一天。
【问题讨论】:
-
我跟踪并看到 GET 请求在后端服务器中有 cookie 标头,但 DELETE 请求没有。 GET 请求 Cookie:{[Cookie, SLG_G_WPT_TO=tr; SLG_GWPT_Show_Hide_tmp=未定义; SLG_wptGlobTipTmp=未定义; .AspNetCore.Cookies = CfDJ8N0PK5yNbkJIt5AuELltrwvkU0sDD6NlU94MdqxlH3NXTFlMdGQkZKMKZU6ryRP-sRobcpZ_dtahmM1JMhG_lMXbE5iMNEz_l6E8tHYceY5h2HCK7VpTx2DTb2ksPBo4DDiMMqPsS1ZsL9HszNFOyMtJ0LPG50jqLiEQp_eGnMZ2OVJ6OJxCuCXk7SrtCuQqtspC5iPlyGrCo7L8at_cWPXkxHpzanyrQgYOJYglCn4-toqmaylabyKI4ZasNKTbV8hSKELFfzHx3a9KU4hPTC3uyK1Q8Ivg6hYH6M0oSkUfDQW64MYYvR1l-7ThupueBQ]} DELETE请求尚未:(跨度>
标签: c# reactjs asp.net-web-api cors devextreme