【发布时间】:2018-12-18 14:06:30
【问题描述】:
我有具有多层(业务层、数据访问层、服务层和 Ui 层)的 Web 应用程序
我在 Ui Layer Razor 页面中调用服务层(Web api)(使用 JQuery 和 Ajax)
作为
<button id="btn">ddd</button>
script type="text/javascript">
$(document).ready(function () {
var filmtable = $("#DataTableHtmlId");
$('#btn').click(function() {
$.ajax({
type: 'GET',
dataType: "json",
contentType: 'application/json; charset=utf-8',
url: 'https://localhost:11111/api/film/1',
withCredentials: true,
AccessControlAllowCredentials: true,
success: function(data) {
alert(data);
},
error: function(data) {
alert("err");
}
});
});
} );
</script>
当调用控制器触发最后一个 ajax 调用的视图时
出现此错误
跨域请求被阻止:同源策略不允许读取位于https://localhost:11111/api/film/1 的远程资源。 (原因: CORS 标头“Access-Control-Allow-Origin”缺失)。[了解更多]
跨域请求被阻止:同源策略不允许读取 https://localhost:11111/api/film/1 的远程资源。 (原因: CORS 请求未成功)。
搜索后我找到了很多解决方案 将 Cors 在 ConfigureServices 中注册为
//Cors policy is added to controllers via [EnableCors("CorsPolicy")]
//or .UseCors("CorsPolicy") globally
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
并在 Configure 中应用 CORS 为
//Apply CORS.
app.UseCors("CorsPolicy");
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseMvc();
但也出现错误有什么帮助吗?
【问题讨论】:
-
您能否告知 app.UseCors("CorsPolicy") 是否在任何定义的端点之前被调用(在调用 UseMvc() 之前)。 “CORS 中间件必须在任何定义的端点之前”。如果您的服务器响应在您发出请求时提供“Access-Control-Allow-Origin”标头,您能否验证(使用我们的 F12)?问候。
-
我知道这个问题 app.UseCors("CorsPolicy"); app.UseHttpsRedirection(); app.UseAuthentication(); app.UseMvc();我通过添加使用顺序更新了问题
-
您确定异步 ajax 请求有效吗?我已经有了经验,尽管异步调用存在问题,但有时我会收到此跨域请求错误。您是否在浏览器的开发者工具的网络选项卡下发现任何错误?
-
你在哪里添加
Cors配置?您需要将其添加到 api 项目而不是 ui 项目。 -
@Tao Zhou 谢谢我已将它添加到 ui 项目中。改变它并把它放在api中它工作:)
标签: asp.net-web-api asp.net-core