GVKun编程网logo

阿里云音视频上传 --[Error Code]:Unknown, [Message]:Client is already closed!, [RequestId]: null

19

针对阿里云音视频上传--[ErrorCode]:Unknown,[Message]:Clientisalreadyclosed!,[RequestId]:null这个问题,本篇文章进行了详细的解答,同

针对阿里云音视频上传 --[Error Code]:Unknown, [Message]:Client is already closed!, [RequestId]: null这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in p...、axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.、C#WebService 出现No ''Access-Control-Allow-Origin'' header is present on the requested resource、Client-error:unknown code for readObject at 0x32 (2) 问题的处理等相关知识,希望可以帮助到你。

本文目录一览:

阿里云音视频上传 --[Error Code]:Unknown, [Message]:Client is already closed!, [RequestId]: null

阿里云音视频上传 --[Error Code]:Unknown, [Message]:Client is already closed!, [RequestId]: null

try {
                Message message = null;
                if (!polling) {
//                    Long number = cloudQueue.getAttributes().getActiveMessages();
                    message = cloudQueue.popMessage(); //debug下在该行报错
                    if (message == null) {
                        polling = true;
                        continue;
                    }
                } else {
                    if (setPolling()) {
                        log.info("Thread" + workerId + " Polling!");
                    } else {
                        continue;
                    }
                    do {
                        log.info("Thread" + workerId + " KEEP Polling!");
                        try {
                            message = cloudQueue.popMessage(WAIT_SECONDS);
                        } catch(Exception e) {
                            log.error("Exception Happened when polling popMessage: " + e);
                        }
                    } while (message == null);
                    clearPolling();
                }
                return message;
            } catch (Exception e) {
                log.error("Exception Happened when popMessage: " + e);
            }

修改为:

try {
                Message message = null;
                if (!polling) {
                    Long number = cloudQueue.getAttributes().getActiveMessages();//改为现在这样解决
//                    message = cloudQueue.popMessage();
                    if (number == 0) {
                        polling = true;
                        continue;
                    }
                } else {
                    if (setPolling()) {
                        log.info("Thread" + workerId + " Polling!");
                    } else {
                        continue;
                    }
                    do {
                        log.info("Thread" + workerId + " KEEP Polling!");
                        try {
                            message = cloudQueue.popMessage(WAIT_SECONDS);
                        } catch(Exception e) {
                            log.error("Exception Happened when polling popMessage: " + e);
                        }
                    } while (message == null);
                    clearPolling();
                }
                return message;
            } catch (Exception e) {
                log.error("Exception Happened when popMessage: " + e);
            }

 

axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in p...

axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in p...

在做项目时,用到axios,数据用post提交时,老是报错,错误提示为:

1 Access to XMLHttpRequest at ''http://127.0.0.1:3000/api/add'' from origin ''http://localhost:8080'' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

如下图:

 

仔细看看自己跨域配置,设置成这样:

//设置跨域请求
app.all(''*'', function (req, res, next) {
  //设置请求头
  //允许所有来源访问
  res.header(''Access-Control-Allow-Origin'', ''*'')
  //用于判断request来自ajax还是传统请求
  res.header(''Access-Control-Allow-Headers'', ''X-Requested-With'')
  //允许访问的方式
  res.header(''Access-Control-Allow-Methods'', ''PUT,POST,GET,DELETE,OPTIONS'')
  //修改程序信息与版本
  res.header(''X-Powered-By'', '' 3.2.1'')
  //内容类型:如果是post请求必须指定这个属性
  res.header(''Content-Type'', ''application/json;charset=utf-8'')
  next()
})

这是因为我在后端设置跨域请求的时候没有所需的请求类型。于是做了如下修改:

//设置跨域请求
app.all(''*'', function (req, res, next) {
  //设置请求头
  //允许所有来源访问
  res.header(''Access-Control-Allow-Origin'', ''*'')
  //用于判断request来自ajax还是传统请求
  res.header("Access-Control-Allow-Headers", " Origin, X-Requested-With, Content-Type, Accept");
  //允许访问的方式
  res.header(''Access-Control-Allow-Methods'', ''PUT,POST,GET,DELETE,OPTIONS'')
  //修改程序信息与版本
  res.header(''X-Powered-By'', '' 3.2.1'')
  //内容类型:如果是post请求必须指定这个属性
  res.header(''Content-Type'', ''application/json;charset=utf-8'')
  next()
})

 

结果就可以啦。

axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

在做项目时,用到axios,数据用post提交时,老是报错,错误提示为:

1 Access to XMLHttpRequest at ‘http://127.0.0.1:3000/api/add‘ from origin ‘http://localhost:8080‘ has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

如下图:

分享图片

 

仔细看看自己跨域配置,设置成这样:

//设置跨域请求
app.all(‘*‘,function (req,res,next) {
  //设置请求头
  //允许所有来源访问
  res.header(‘Access-Control-Allow-Origin‘,‘*‘)
  //用于判断request来自ajax还是传统请求
  res.header(‘Access-Control-Allow-Headers‘,‘X-Requested-With‘)
  //允许访问的方式
  res.header(‘Access-Control-Allow-Methods‘,‘PUT,POST,GET,DELETE,OPTIONS‘)
  //修改程序信息与版本
  res.header(‘X-Powered-By‘,‘ 3.2.1‘)
  //内容类型:如果是post请求必须指定这个属性
  res.header(‘Content-Type‘,‘application/json;charset=utf-8‘)
  next()
})

这是因为我在后端设置跨域请求的时候没有所需的请求类型。于是做了如下修改:

//设置跨域请求
app.all(‘*‘,‘*‘)
  //用于判断request来自ajax还是传统请求
  res.header("Access-Control-Allow-Headers"," Origin,X-Requested-With,Content-Type,Accept");
  //允许访问的方式
  res.header(‘Access-Control-Allow-Methods‘,‘application/json;charset=utf-8‘)
  next()
})

 

结果就可以啦。

C#WebService 出现No ''Access-Control-Allow-Origin'' header is present on the requested resource

C#WebService 出现No ''Access-Control-Allow-Origin'' header is present on the requested resource

解决方法:

 

 打开Webservice的Web.config文件

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
        <add name="Access-Control-Allow-Origin" value="*"/>  // “*”表示允许所有的跨域访问,如果要设置只允许一个一个地址的跨域,则需将“*”替换成被允许的地址
      </customHeaders>
    </httpProtocol>
  </system.webServer>

就可以解决跨域问题了

 

Client-error:unknown code for readObject at 0x32 (2) 问题的处理

Client-error:unknown code for readObject at 0x32 (2) 问题的处理

问题描述

    没错,这里是在使用 XXL 分布式定时任务框架遇到的问题,网上对于该类问题的给出的解决方案大都是关于执行器配置调度中心项目地址有误,要修改配置 xxl.job.admin.addresses。我这里没用分布式,本地开发环境,开了一个执行器;检查确认执行器项目配置的调度中心地址无误。但是执行器项目启动时打印日志有个端口占用问题。

问题分析

    最初启动调度中心项目和执行器项目后,没在意执行器项目端口占用的问题;调度中心正常使用,配置好执行器就直接调用,执行器执行异常。 报错信息:

java.lang.IllegalStateException: unknown code for readObject at 0x32 (2)
	at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:33)
	at com.xxl.job.core.rpc.netcom.jetty.client.JettyClient.send(JettyClient.java:37)
	at com.xxl.job.core.rpc.netcom.NetComClientProxy$1.invoke(NetComClientProxy.java:51)
	at com.sun.proxy.$Proxy31.run(Unknown Source)
	at com.xxl.job.admin.core.trigger.XxlJobTrigger.runExecutor(XxlJobTrigger.java:193)
	at com.xxl.job.admin.core.route.strategy.ExecutorRouteFirst.routeRun(ExecutorRouteFirst.java:26)
	at com.xxl.job.admin.core.trigger.XxlJobTrigger.trigger(XxlJobTrigger.java:162)
	at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:29)
	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: com.caucho.hessian.io.HessianProtocolException: unknown code for readObject at 0x32 (2)
	at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1697)
	at com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1177)
	at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:31)
	... 10 more

    调度中心项目配置,检查配置没什么问题,调度中心正常运行,可以访问使用,可以配置执行器触发执行器的调用执行动作。调度中心根据执行器配置新增本地测试执行器。 在这里插入图片描述

    执行器项目配置,检查配置调度中心地址,本地调用,直接访问 http://127.0.0.1:8080/ 是正确响应的;本身执行器的 appname/ip/port 也是调度中心和执行器保持一致即可;ip 不配置项目会默认取本机 IP 地址;检查后配置正确。才注意去看下端口占用的问题,

xxl.job.admin.addresses=http://127.0.0.1:8080/
xxl.job.executor.appname=smartcrm-executor
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.executor.logpath=/mnt/applogs/xxl-job/jobhandler/
xxl.job.accessToken=

    启动执行器项目时控制台日志包含一个端口占用问题,经典操作了,Win + R 打开命令行窗口,查看项目端口 9999 占用进程,taskkill 杀死进程。

   >C:\Users\Lenovo>netstat -ano|findStr "9999"
   TCP    0.0.0.0:9999           0.0.0.0:0              LISTENING       26248
   >C:\Users\Lenovo>taskkill -t -f -im 26248
   成功: 已终止 PID 26248 (属于 PID 11140 子进程)的进程。

    重新启动执行器项目,控制台无情输出 java.net.BindException: Address already in use: bind。口吐芬芳 ing

[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed(AbstractLifeCycle.java:212)] FAILED ServerConnector@90f437{HTTP/1.1}{0.0.0.0:9999}: java.net.BindException: Address already in use: bind
java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_191]
	at sun.nio.ch.Net.bind(Net.java:433) ~[?:1.8.0_191]
	at sun.nio.ch.Net.bind(Net.java:425) ~[?:1.8.0_191]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:1.8.0_191]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[?:1.8.0_191]
	at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) ~[jetty-server-9.2.22.v20170606.jar:9.2.22.v20170606]
	at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[jetty-server-9.2.22.v20170606.jar:9.2.22.v20170606]
	at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) ~[jetty-server-9.2.22.v20170606.jar:9.2.22.v20170606]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [jetty-util-9.2.22.v20170606.jar:9.2.22.v20170606]
	at org.eclipse.jetty.server.Server.doStart(Server.java:366) [jetty-server-9.2.22.v20170606.jar:9.2.22.v20170606]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [jetty-util-9.2.22.v20170606.jar:9.2.22.v20170606]
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:46) [SmartJobCore-1.8.1-20191128.032008-1.jar:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]

    问题排查到 Tomcat,执行器项目是 IDEA 配置的本地 Tomcat,执行器 Tomcat 配置如下。执行器项目配置文件中 xxl.job.executor.port=9999,此处 Tomcat 不能配置为 9999,这就占用了。。。 在这里插入图片描述

问题解决

    事实上问题是这么解决的,是我孤陋寡闻了,不知 XXL 执行器配置有这个问题要注意;

配置调度中心项目地址有误,要修改配置 xxl.job.admin.addresses 执行器端口配置 xxl.job.executor.port 和 Tomcat 的 HTTP port 不能冲突

     xxl.job.executor.port=9999 ,HTTP port 修改为 9998;调度中心执行器配置仍然为 127.0.0.1:9999;再次启动执行器项目,控制台打印日志无异常。调度中心再次使用该执行器执行定时任务,正常执行,无异常出现。 在这里插入图片描述

Power By niaonao, The End

今天关于阿里云音视频上传 --[Error Code]:Unknown, [Message]:Client is already closed!, [RequestId]: null的分享就到这里,希望大家有所收获,若想了解更多关于axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in p...、axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.、C#WebService 出现No ''Access-Control-Allow-Origin'' header is present on the requested resource、Client-error:unknown code for readObject at 0x32 (2) 问题的处理等相关知识,可以在本站进行查询。

本文标签: