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

部署均值堆栈项目时出现问题。存在CORS阻止每个请求的问题

宣望
2023-03-14

我正在部署Mean-Stack项目,在部署时,收到CORS策略错误,说...

CORS策略阻止了从源http://localhost:4200在http://XXX.XXX.X.XX:4000/user/postUserAuth处访问XMLHttpRequest:对预飞行请求的响应无法通过权限改造检查:当请求的凭据模式为“包含”时,响应中的访问控制允许源标头的值不能是通配符“*”。由XMLHttpRequest发起的请求的凭据模式由with凭据属性控制

我们怎样才能允许所有的请求到达Express服务器并解决这个问题?

服务器我们使用的角度是精简服务器。

// Used this in Express 
    app.use(cors((
    {
    'origin':'*',
    'credentials':true,
    'preflightContinue':true,
    'optionSuccessStatus':204
    }
    )));

    //Server is logging this 
     "OPTIONS /user/postUserAuth HTTP/1.1" 200 4 "http://localhost:4200/login


    //Angular service class
    export class LogincontrollerService {
      private address = APIEndpoint;
      _LoginURL=this.address+"/user/postUserAuth";
      constructor(private _http: HttpClient) { }

      // function to for sending request to server with data. 
      getLogin(data){
      return this._http.post<any>(this._LoginURL,data,{
        withCredentials:true
      });
    }

    }

共有1个答案

虞祯
2023-03-14

方法1:在< code>cors选项中指定url,而不是< code>*:

const corsOptions = {
    origin: 'http://localhost:4200',
    credentials: true,
    preflightContinue:true,
    optionSuccessStatus:204

}
app.use(cors(corsOptions));

注意:这是安全性的一部分。如果您希望允许凭据,则您的访问控制允许来源不能使用< code>*。您必须指定确切的协议域端口*

方法2:使用以下middileware解决CORS(如果您不想允许凭据):

app.use(function (req, res, next) {

    // website you wish to  allow to connet    
    res.setHeader('Access-Control-Allow-Origin','http://localhost:4200/');

    // request method you wish to allow
    res.setHeader('Access-Control-Allow-Methods','GET, POST, OPTION, PUT, PATCH, DELETE');

    // request headers you wish to allow 
    res.setHeader('Access-Control-Allow-Headers','X-Requested-With,content-type,Authorization');   

    // set to true if you need the website to include  cookies  in the  request  sent 
    // to the API (eg. in case you can see sessions )
    res.setHeader('Access-Control-Allow-Credentials','false');

    // pass to the next layer of middleware
    next();

});
 类似资料:
  • 我正试图从vue.js端访问laravel服务器。但它表明 CORS策略阻止从来源“http://localhost:8000/api/registerdoctor”访问位于“http://localhost:8080”的XMLHttpRequest:请求的资源上没有“Access-Control-Allow-Origin”标头。 怎么办?

  • 我有一个maven项目,我正在Intellij IDEA中导入它。除了部署maven项目控制台时显示以下错误外,一切都很好 [ERROR]未能执行goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy(default-deploy)on project multisite:Deployment Failed:在distributio

  • 当我向我的api发出请求时,chrome会阻止我的请求,原因是内核。在我的firebase云函数上,我添加了response.set('access-control-allow-origin','*');(axios get中的xxxxxx只是隐藏请求url) 然后在我的angular应用程序中,我发出一个http post请求,如下所示 url与请求来自的域不同。 当我测试《邮差》里的一切,一切

  • 问题内容: 我在package.json中添加了proxy,效果很好,但是在npm run build之后,CORS问题再次浮出水面,有人知道在React中npm run build之后如何处理CORS问题。 我试图使用各种方法在axios请求中添加标头。但是,我未能在axios请求中添加’Access-Control-Allow- Origin’:’*’。我的代码如下: package.json

  • 问题内容: 我正在从客户端向Google oauth 2 API 进行ajax调用以获取访问令牌,但出现以下错误: 对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://blah-blah.com ” 我希望该调用为ajax,以便通过或换句话说,在进行调用时不会打扰用户,我如何获得访问令牌以

  • 首先,我为我的英语水平不太好而道歉。我正在实习,我的任务是继续为公司开发一个内联网网站。我在实习开始时就拿到了代码,并开发了本地版本,具有本地网络服务器和本地数据库。这是我在公司服务器上部署更改版本的时候了,一旦我这样做了,到目前为止一直使用旧版本的站点会显示“ 内部服务器错误 500”。它来自什么,有人有解决方案吗?PS :该网站是用CakePhp开发的。