小编Sar*_*yan的帖子

如何使用mod_perl发送自定义http状态代码

我编写了一个CGI程序,并将HTTP标头的状态错误发送给客户端.但是当我尝试使用mod_perl时,它只响应200 ok状态.如何发送自定义状态代码?

这是我想要回复自定义状态错误时的代码:

my $cgi      = new CGI;
print $cgi->header(-type=>"text/html", -charset=>'utf-8', -status=>599);
Run Code Online (Sandbox Code Playgroud)

编辑:
这是代码:

#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use SessionManagement;


my $cgi      = new CGI;
my $method = $cgi->param("method");

my $sessionManagement = new SessionManagement(cgi=>$cgi);
if($sessionManagement){

  if (defined($method)) {
    if($method eq "authentication") {
        loginMethod($cgi,$sessionManagement);
    } elsif ($method eq "someMethod"){
        someMethod($cgi);
    } else{
        print $cgi->header(-type=>"text/xml", -charset=>'utf-8');
        print "<html>method does not exist</html>";
    }

  } else {
      print $cgi->header(-type=>"text/html", -charset=>'utf-8' , -status=>599);
      print "<html>blah blah</html>"; …
Run Code Online (Sandbox Code Playgroud)

perl mod-perl2

9
推荐指数
1
解决办法
939
查看次数

我怎么能隐藏/保护Perl脚本的密码

我正在编写一个需要连接到SMTP服务器才能发送邮件的Perl脚本,但我真的不喜欢这样的东西:

my $pass = '123456';
Run Code Online (Sandbox Code Playgroud)

我找到了Data :: Encrypted,它应该允许用户第一次提示它然后加密存储它.

use Data::Encrypted file => ".passwd", qw(encrypted);
my $password = encrypted('password');
Run Code Online (Sandbox Code Playgroud)

但我无法使它工作,它会导致运行时错误:

/Library/Perl/5.12/Data/Encrypted.pm第78行的密钥文件格式错误

有人有同样的问题,或者知道隐藏/保护密码的其他方法吗?

encryption passwords perl

7
推荐指数
1
解决办法
1万
查看次数

Spring WebSocket MessageMapping无法正常工作

我需要写聊天。但是我有一个问题,我无法触发MessageMapping controller。应用包含两部分,前端在4200端口上运行,后端在8080端口上运行。我已经设置了所有配置,但@MessageMapping controller没有被触发。后端控制台什么也没说。但是浏览器控制台说,该消息已发送。您能帮我解决问题吗?这是hava配置。

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableSimpleBroker("/topic");
    config.setApplicationDestinationPrefixes("/app");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/chat").setAllowedOrigins("*").withSockJS();
}
Run Code Online (Sandbox Code Playgroud)

这是控制器

@Controller
public class MessageController {


@MessageMapping("/chat")
@SendTo("/topic/message")
public void sendMessage(Message message) {
    System.out.println("test");
}
Run Code Online (Sandbox Code Playgroud)

和写在angular的前端部分:

(function (angular, SockJS, Stomp, _, undefined) {
"use strict";

angular.module("app").
factory("chatService", chatService);

chatService.$inject = ["$q", "$timeout"];

function chatService ($q, $timeout) {

    var service = {}, listener = $q.defer(), socket = {
        client: null,
        stomp: null
    }, …
Run Code Online (Sandbox Code Playgroud)

java stomp websocket spring-messaging java-websocket

5
推荐指数
1
解决办法
688
查看次数

HTML 5 AudioElement 不会在 IOS 11 设备上的 safari 中播放 mp3 Livestreams

我是一家广播公司的网络开发人员。自 IOS 11 发布以来,我们收到了一些用户投诉,称我们的音频直播流无法再在 IOS 11 设备上播放。为了在我们的网站中嵌入流,我们使用 HTML5 AudioElement。在装有 IOS 11 的 iPhone 上调试 javascript 时,我们认识到调用音频元素 play() 方法会导致错误代码 4 (MEDIA_ERR_SRC_NOT_SUPPORTED) 的 MediaError。所有其他设备(Android、Windows 和 IOS 10 及以下)都可以毫无问题地播放流。我创建了一个小代码笔示例

    <audio controls>
      <source src="http://hr-hrinfo-
      live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3" 
      type="audio/mpeg;codecs="mp3"">
      Your browser does not support the audio element.
    </audio>
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/ampersand83/pen/pWwgKm在其中我只是通过 AudioTag 创建一个 AudioElement 并将源标签传递给我们的流 URL 之一。

运行 IOS 10 及以下版本的设备以及当前的 android 或 windows 设备都可以毫无问题地播放流。但是,运行 IOS 11.0.1 的设备无法播放流。我找不到任何关于为什么这不再可能的信息。有没有人知道为什么我们的流将不再工作,并且可以就我们可以做些什么来使它们再次工作提供建议?

html javascript mobile-safari html5-audio ios11

5
推荐指数
1
解决办法
3748
查看次数

尝试重新加载 module.pm 中止。编译失败

我有一个 Perl 脚本,它正在执行mod_perl并作为HTTP server.myServer.pl使用一个module.pm. 当我与一位用户一起使用时,一切看起来都很好。但是当我把它置于数百名用户的压力之下时,它给了我这个奇怪的错误。

[错误] 尝试重新加载 MyModule.pm 已中止。\n在 /var/www/mod_perl/myServer.pl 行 36 处编译失败。\nBEGIN 失败--编译在 /var/www/mod_perl/myServer.pl 行 36 处中止.

这是myServer.pl代码开头的示例

#!/usr/bin/perl -w
use strict;
use CGI;
#other use
use lib "/var/www/lib/receipt/pos";
use lib "/var/www/lib/common";
use MyModule;

my $q   = new CGI;
my $myM = new MyModule(requestParams=>$q);
if($myM){
  my $requestId = $myM->requestId;
  #do sth
}else{
    #do sth
}

#other codes
Run Code Online (Sandbox Code Playgroud)

编辑

这是一个代码 MyModule.pm

这不是全部,因为我不能全部发布。所以我编辑了它:

package MyModule;
use strict;
use CGI; …
Run Code Online (Sandbox Code Playgroud)

perl mod-perl

5
推荐指数
1
解决办法
3106
查看次数