我必须执行以下操作:给定从服务器加载的页面,我必须在加载后自动在该页面中提交表单,并使用相同的字符串(test worked)填充其所有输入字段.这显然是我的问题的简化,但它足够接近!
目前我正在获取表单,并使用https://github.com/cheeriojs/cheerio来探索它:
var URL = http://www.example.com/form/index.html"
// ...load the page ...
$ = cheerio.load( fetchedPageText );
Run Code Online (Sandbox Code Playgroud)
目前,我有以下代码:
var $ = cheerio.load( fetchedPageText );
var forms = $('form');
for( var i1 = 0, l1 = forms.length; i1 < l1; i1 ++ ){
var form = forms[ i1 ];
inputFields = $( 'input', form );
console.log("******FORM ACTION: ", form.attribs.action );
console.log("******FORM: ", form );
for( var i2 = 0, l2 = inputFields.length; i2 < l2; i2 ++ …Run Code Online (Sandbox Code Playgroud) 我在通过 API 向我的 gitlab 服务器添加 SSH 密钥时遇到问题(它通过网页运行良好)。
我遇到了这个问题(已在此处修复),它与“错误”的 openssh 实现有关。他们在里程碑 7.10 中修复了这个问题。唯一的事情......我的服务器安装了openssh 6.6:
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3, OpenSSL 1.0.1f 6 Jan 2014
Run Code Online (Sandbox Code Playgroud)
现在,我不知道该修复是否向后兼容,但也许值得一提。
此外,日志没有显示任何警告或错误或任何内容。/tmp/gitlab_key* 文件在服务器上生成:

我面临的问题是 gitlab无法通过 API创建指纹。这是我从 API 得到的回应:
{
"message": {
"fingerprint": ["cannot be generated"]
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在我不知道可能是什么问题。我已经为此苦苦挣扎了将近一个星期,所以我真的希望他的问题能够得到解决。
- 只是为了记录,这是我用来通过 API 添加 ssh 密钥的脚本
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3, OpenSSL 1.0.1f 6 Jan 2014
Run Code Online (Sandbox Code Playgroud) 我的 Web 应用程序在后端使用 Node.js 和 Express。当违反内容安全策略 (CSP) 时,报告 URI 报告空对象。我的后台代码如下:
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(helmet({
contentSecurityPolicy: {
directives: {
// some policies here
reportUri: ["/my_amazing_csp_report_parser"],
},
},
}));
app.use('/my_amazing_csp_report_parser', (req, res, next) => {
console.log(req.body);
next();
})
Run Code Online (Sandbox Code Playgroud)
我在MDN 的文档中读到,报告 URI 应报告整个 JSON 对象。但我的console.log(req.body);返回一个空对象。我想知道我用app.use(bodyParser.urlencoded({ extended: true }));and解析 JSON 对象是否错误app.use(bodyParser.json());?
我希望利用Chai-HTTP进行一些测试.当然,我想测试的不仅仅是我的GET,但是在尝试发布POST时,我似乎遇到了一个主要障碍.
为了弄清楚为什么我的POST不起作用,我开始在POST测试服务器上点击它们.
这是一个使用完全不同的工具链(Jasmine-Node和Frisby)进行测试的POST尝试(可以正常工作):
frisby.create('LOGIN')
.post('http://posttestserver.com/post.php', {
grant_type:'password',
username:'helllo@world.com',
password:'password'
})
.addHeader("Token", "text/plain")
.expectStatus(200)
})
.toss();
Run Code Online (Sandbox Code Playgroud)
结果如下:
Time: Mon, 27 Jun 16 13:40:54 -0700
Source ip: 204.191.154.66
Headers (Some may be inserted by server)
REQUEST_URI = /post.php
QUERY_STRING =
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 19216
REMOTE_ADDR = 204.191.154.66
HTTP_CONNECTION = close
CONTENT_LENGTH = 64
HTTP_HOST = posttestserver.com
HTTP_TOKEN = text/plain
CONTENT_TYPE = application/x-www-form-urlencoded
UNIQUE_ID = V3GPVkBaMGUAAB1Uf04AAAAc
REQUEST_TIME_FLOAT = 1467060054.9575
REQUEST_TIME = 1467060054
Post Params:
key: 'grant_type' value: 'password' …Run Code Online (Sandbox Code Playgroud) 我正在使用 NodeJS/Express 和 EJS 创建一个表单到 API 路由。当我尝试 POST 请求并调用 req.body.password & req.body.confirm 时,我得到“未定义”。
索引.js
import http from 'http';
import express from 'express';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import passport from 'passport';
const LocalStrategy = require('passport-local').Strategy;
var flash = require('connect-flash');
import config from './config';
import routes from './routes';
let app = express();
app.server = http.createServer(app);
//middleware
app.use(bodyParser.json({
limit: config.bodyLimit
}));
//EJS VIEWS CODE
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(flash());
Run Code Online (Sandbox Code Playgroud)
我的控制器的一部分,带进口
import mongoose from 'mongoose';
import { …Run Code Online (Sandbox Code Playgroud)