首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CORS的问题。冷盒-冷藏箱

CORS的问题。冷盒-冷藏箱
EN

Stack Overflow用户
提问于 2021-06-15 09:48:12
回答 1查看 183关注 0票数 1

我们在后端应用程序中使用ColdBox,并且遇到了CORS的奇怪问题。我们有一个preProcess函数,作为ajax调用的拦截器,它如下所示:

函数preProcess(事件、数据、缓冲区、rc、中华人民共和国){

代码语言:javascript
复制
    event.setHTTPHeader( name="Access-Control-Allow-Origin", value="http://localhost:3000" );      
    event.setHTTPHeader( name="Access-Control-Request-Headers", value="" );
    event.setHTTPHeader( name="Access-Control-Request-Methods", value="GET,HEAD,POST" );
    event.setHTTPHeader(name="Allow-Control-Allow-Credentials", value="true");
    event.setHTTPHeader( name="Access-Control-Allow-Headers", value="*");

    var uuid = CreateUUID();
    var util = new com.smartvillage.api.util.ResponseUtil();
    var validator = new com.smartvillage.core.util.JsonValidator.JsonValidator();

    var model = server[ "wireBox-smartvillage" ];


    event.setValue( "model", model );
    event.setValue( "util", util );
    event.setValue( "validator", validator );
    event.setValue( "uuid", uuid );

    var authSvc = model.getInstance( "AuthService" );
    var ctx = arguments.event.getContext();

    util.writeData( "#arguments.event.getContext().event#-#uuid#", SerializeJSON( data ) );

    var ht = GetHTTPRequestData();

    var data = {
        "url"     = url,
        "form"    = form,
        "date"    = now(),
        "content" = ht.content,
        "headers" = ht.headers,
        "method"  = ht.method
    }

    if (ctx.event NEQ "auth.login" ) {
      
        var accessToken = event.getHTTPHeader("Authorization");
    
            cffile(action="append", file=expandPath('/debug.log'), output="#now()#- #accessToken# -");
            
            if (len(accessToken)) {

                if ( !authSvc.isAuth( trim(accessToken.replace('Bearer', '')) )  ) {
                
                    event.renderData(data="Not Authorized",statusCode="401",statusText="Unauthorized")
                        .noExecution();

                } 
            } else {

                echo('Token not found');
                abort;

            }

    };
    
};

如您所见,我们为本地主机(客户端正在运行的位置)设置了允许源标头,但所发生的情况是,虽然一些ajax调用成功,但其他一些由于Cors问题而失败。下图显示了我们的网络。

正如您所看到的,相同的调用随机失败或成功。它给我们带来的错误是:请求的资源上没有“访问控制-允许-原产地”头。如果不透明响应满足您的需要,请将请求的模式设置为“no- CORS”,以获取禁用CORS的资源。

这一切为什么要发生?

编辑:

我可以看到,如果有连续的ajax调用,就会发生这种情况。

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 10:45:54

尝试将远程添加到函数中。类似于这个remote any function example() {},我有过一些类似的问题,ago.....so,也许它会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67983918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档