当前位置: 首页 > 知识库问答 >
问题:

Post在预飞行期间未能阻止CORS策略,尽管我已经在拦截器中添加了“访问-控制-允许-起源”头,但它没有表示“访问-控制-允许-起源”头

袁泓
2023-03-14

使用:Angular 7、.NET core、web api

Access to XMLHttpRequest at 'https://localhost:44372/api/tasks' from 
origin 'http://localhost:4200' has been blocked by CORS policy: Response 
to preflight request doesn't pass access control check: No 'Access- 
Control-Allow-Origin' header is present on the requested resource.
@Injectable()
export class CredentialsInterceptor implements HttpInterceptor {

intercept(request: HttpRequest<any>, next: HttpHandler): 
Observable<HttpEvent<any>> {
    request = request.clone({
        withCredentials: true
    });
    return next.handle(request);
  }
}
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
        {
            builder.SetIsOriginAllowed((host) => true)
                   .AllowAnyMethod()
                   .AllowAnyHeader()
                   .AllowCredentials();
        }));

...//Configure
app.UseCors("AllowAll");
app.UseMvc(routes =>
{
    ...
intercept(request: HttpRequest<any>, next: HttpHandler): 
Observable<HttpEvent<any>> {
    request = request.clone({
        withCredentials: true
    });
    request.headers.append('Access-Control-Allow-Origin', 'http://localhost:4200');
    return next.handle(request);

我错过了什么?我已经搜索了几个小时了。我知道如果不指定允许的来源,CORS会被阻止。其他StackOverflows说不可能是客户端,但我觉得客户端请求没有发送'Access-Control-Allow-Origin'标头。如何进行测试以确保头已设置?为什么会得到工作而不提出请求?

共有1个答案

池庆
2023-03-14

所有其他帖子都说明了问题是什么,但没有说明问题的解决办法。OPTIONS请求在没有授权标头的情况下被放置。我能够发出GET请求,因为传递了windows身份验证头,但是当我发出PUT请求时,必须首先发送一个不包含头的选项。

为了让服务器允许这些选项,我必须允许对这些选项进行匿名身份验证。我在project Properties->debug部分中选择了它。

 类似资料:
  • 我正在使用以下版本 null CORS策略阻止了从原点获取的访问:请求的资源上没有'Access->Control-Allow-Origin'标头。如果一个不透明的响应满足您的需要,请将请求的模式设置为“no-cors”,以便在禁用CORS的情况下获取资源。 我不明白为什么我会得到这个错误。 以下是从Google Chrome开发者工具中提取的相关请求和响应细节 推荐人策略:严格的-原产地-当-跨

  • 我使用从使用API的ReactJS发送数据,我得到一个错误: 以下是错误: CORS策略已阻止从来源“http://localhost/2019/EURDU/user_controllers/userregistercontroller/userregistration”访问位于“http://localhost:3000”的XMLHttpRequest:飞行前响应中的access-control

  • 我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?

  • 它是一个服务类,如下所示: 我试图通过将用户名和密码添加为let来发送用户名和密码,但它说我被CORS策略阻止了。 在这里,我在我的春靴里补充道: 在controller类中: 来自网络选项卡的消息

  • 问题内容: 我尝试使用以下代码通过$ http(角度)发送http请求: 但这不起作用,并且我在Web控制台中有此错误: 你有解决方案吗 ? 问题答案: 您看到此错误是由于在浏览器中实现的称为Same Origin Policy的安全机制所致。 基本上,这是由于您的网页尝试访问驻留在与网页本身不同的主机,端口或方案(HTTP / HTTPS /文件等)所在的服务器上的资源而引起的。 为了解决此问题

  • 我正在创建一个脚本,加载在其他网站的外部。它加载CSS和HTML,在我自己的服务器上工作得很好。 但还是不管用。