CORS:没有'Access-Control-Allow-Origin'标题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CORS:没有'Access-Control-Allow-Origin'标题相关的知识,希望对你有一定的参考价值。

当我从浏览器向我的servlet发出请求时,我收到此错误消息:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,'http://localhost:3000'原产地不允许进入。响应具有HTTP状态代码405.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

进入我的服务器我创建了这个过滤器:

@Provider
public class CORSFilter implements ContainerResponseFilter
{

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
    {   
        responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
        responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
        responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true");
        responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        responseContext.getHeaders().add("Access-Control-Max-Age", "1209600");
    }

}

这是我的打字稿代码:

var oHeaders = {
      'Accept': 'text/html,application/xhtml+xml,application/xml,application/json;odata.metadata=minimal',
      "Odata-Version": "4.0",
      "Odata-MaxVersion": "4.0",
      "Prefer": "odata.allow-entityreferences"
    };

    var metadataRequest =
    {
      headers: oHeaders,
      requestUri: "http://localhost:8080/olingo/odata/$metadata",
      data: null
    };

    this.odata$ = Observable.create(o =>
      oData.read(
        metadataRequest,
        (data, response) => {
          o.next({ data, response });
          o.complete();
        },
        (error) => o.error(error),
        null
      )
    );

有任何想法吗?

答案

您在请求中缺少Origin标头。添加这个:

'Origin': 'http://example.com'

在您的javascript中的标题。我也会尝试添加内容类型标题:

'Content-Type': 'text/html; charset=utf-8'    // For example

如果没有一个解决问题,请在页面顶部手动添加接收php文件中的"Access-Control-Allow-Origin", "*",如下所示:

<?php
    header("Access-Control-Allow-Origin: *");
?>

以上是关于CORS:没有'Access-Control-Allow-Origin'标题的主要内容,如果未能解决你的问题,请参考以下文章

CORS:没有'Access-Control-Allow-Origin'标题

Zend Framework 2 - 如何允许杀死CORS策略:没有'Access-Control-Allow-Origin'

Zscaler 的 Ajax 问题

CORS:在请求的资源上没有'Access-Control-Allow-Origin'标头。角,净芯

Django:ImportError:没有名为'corsheaders'的模块

有没有办法使用 RemoteWebDriver for SauceLabs 禁用 CORS 检查