- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
NodeJS、AMP 形式、TLS/SSL、Nginx、npm、HTTP/2所有最小版本。
var bodyParser = require('body-parsre');
app.use(bodyParser.urlencoded({true}); // tried false
app.use(bodyParser.json()); // tried text(), json({type:*})
app.post('/post', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
console.log('sent the name ' + req.body.name);
console.log(util.inspect(req.body));
console.log('request ' + req.query);
res.json('Yo' + req.body.name);
});
Shell Console.log 结果未定义
sent the name undefined
{}
request /vote?__amp_source_origin=https%3A%2F%2Fexample.com
浏览器控制台成功
Yo tanaka
毫无疑问是 HTML
Powered by AMP ⚡ HTML – Version
<form method="post" action-xhr="https://example.com/post" target="_top" novalidate="">
<input type="text" name="name" value="a" placeholder="Name..." required="">
<input type="submit" value="Subscribe" disabled="">
</form>
vote?__amp_source_origin=https%3A%2F%2Fexample.com 200 fetch
preview Yo tanka
response Yo tanaka
Need not Body-Parser.
//var bodyParser = require('body-parsre');
//app.use(bodyParser.urlencoded({true}); // tried false
//app.use(bodyParser.json()); // tried text(), json({type:*})
// Use req.request
app.get('/post', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
console.log('sent the name ' + req.query);
console.log('request ' + req.query);
res.json('Yo' + req.query);
});
表单方法获取
<form method="get" action-xhr="https://example.com/post" target="_top" novalidate="">
Shell Console.log 结果
sent the name tanaka
{name: tanaka}
request [/vote?__amp_source_origin=https%3A%2F%2Fexample.com,
{name:tanaka}]
浏览器控制台成功
Yo tanaka
我想发帖。我认为是 body-parser 的原因。
npm list --depth=0
ds@1.0.0 /usr/local/src/ds
├── body-parser@1.17.1
├── cookie-session@2.0.0-beta.1 extraneous
├── express@4.15.2
├── express-session@1.15.2 extraneous
├── helmet@3.5.0
├── mongodb@2.2.25
├── mongoose@4.9.2 extraneous
├── nunjucks@3.0.0
├── safe-regex@1.1.0 extraneous
└── session@0.1.0 extraneous
body-parser 最小版本 https://github.com/expressjs/body-parser
BODYPARSER 和 AMPFORM 彼此不兼容吗?
最佳答案
amp-form 组件实际上使用 enctype multipart/form-data
发送数据,因此无法使用 body-parser 对其进行解析。他们建议使用 busboy、multiparty、formidable 或 multer 来处理多部分 body 。这是一个使用 multer 的示例:
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({true});
app.use(bodyParser.json());
var multer = require('multer');
var multipart = multer();
app.post('/post', multipart.fields([]), function (req, res) {
res.setHeader('Content-type', 'application/json');
res.setHeader('Access-Control-Allow-Credentials', true);
res.setHeader('Access-Control-Allow-Origin', '*.ampproject.org');
res.setHeader('AMP-Access-Control-Allow-Source-Origin', 'http://' + req.headers.host);
res.setHeader('Access-Control-Expose-Headers', 'AMP-Access-Control-Allow-Source-Origin');
console.log('sent the name ' + req.body.name);
console.log(util.inspect(req.body));
console.log('request ' + req.query);
res.json('Yo' + req.body.name);
});
您还需要更改这些 header 以避免 AMP 验证错误。
关于node.js - NodeJS Express AMP 表单 req.body。 POST未定义,GET成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163046/
我正在关注 this关于在自己的网站中集成 Paypal 的教程。 例如,在页面中的第 3 步的第 20 行,我发现了这个: if (!isset($_POST["txn_id"]) &
amp-story 是否与 amp-access(或 amp-subscription)一起使用? 这里是 amp-access 的示例代码 { "authorization": "
我在一个主题中有几个非 AMP 页面。我的非 AMP 页面将在文章正文中包含指向同一主题中其他非 AMP 页面的链接。页面的 AMP 版本应该链接到同一主题中的其他 AMP 页面,还是文章中的所有链接
这是我正在尝试做的事情: 使用 google API 对邮政编码或城市和州进行地理定位。地址参数的值来自表单字段。 将地理线插入同一表单中的隐藏字段 提交表格。 我已经尝试使用 AMP-LIST 和
搜索控制台添加了一系列“引用的 AMP 网址不是 AMP”问题。 如果我使用 AMP Test我得到: 但是,当我 checkin https://validator.ampproject.org/时
更具体地说,您可以在未通过 AMP 验证的页面上使用 AMP 标记和代码吗? 用例:我想使我的网站完全使用 AMP,为此,我需要使用类似 on='tap:' 的东西对于我的下拉菜单和 用于跟踪,但我网
更具体地说,您可以在未通过 AMP 验证的页面上使用 AMP 标记和代码吗? 用例:我想使我的网站完全使用 AMP,为此,我需要使用类似 on='tap:' 的东西对于我的下拉菜单和 用于跟踪,但我网
如何使用 amp-list、amp-mustache、amp-form 和 amp-bind 实现自动建议? 想要为页内搜索实现自动建议 研究过这个Google example 希望autosugge
我想知道如何根据用户选择的选项获取文本内容并将其设置为amp-state。例如,如果用户选择“红色”选项。我想将“胭脂”设置为 amp-state 而不是“红色”。我知道我可以通过 setState
示例:- Open Iframe in Lightbox 我还尝试从顶部操纵 iFrame 的位置 75% 或 600px,但它也不起作用。 AMP iFr
我有一个名为 currentItem 的状态,其中包含 url、标题、描述...当我按下按钮时,currentItem 应保存在名为 myItems 的其他状态中。它将包含一个项目对象列表。 现在的问
我是 Azure SQL 数据库的新手(之前没有数据库经验),目前正在尝试从 microsoft learn 获得学位。我被困在这节课中,似乎无法弄清楚,但我认为这很容易。问题: PS /home/s
我正在尝试测试新的 amp-script 功能有多强大。但是,我收到此错误: Experiment "amp-script" is not enabled. log.js:187 "E
我在 AMP 结合 amp-state 和 amp-position-observe 时遇到问题。 { "visible": "n"
有 3 种方法可以将 AMP 与 PWA 结合起来(如 here 中所述): 具有 PWA 功能的 AMP 页面 AMP 作为 PWA 的入口点 AMP 作为 PWA 的数据源 在第一种和第三种方法中
我在 AMP 结合 amp-state 和 amp-position-observe 时遇到问题。 { "visible": "n"
我有一个 amp 故事,我需要从动态生成的 url 创建一个包含全屏视频的页面。在下面的第 2 页中,我直接使用 amp-video 组件呈现全屏,在第 3 页中,我使用 amp-list 提供视频
查看 AMP 规范,鉴于自定义样式元素依赖于 CSS 变量,这意味着当前的浏览器支持范围很窄。见:Can I use reference 我猜非自定义样式有一个“优雅的回退”,因为不理解 CSS 变量
我是 AMP 的新手。我有一个响应式网站,我需要在其主页上实现 AMP。是否可以使其与 AMP 兼容而不影响桌面 View ?或者我需要为 AMP 重写单独的代码? 最佳答案 您可以使用@media来
我在实现 amp-iframe 时在控制台中收到以下验证错误: Overflow element must be defined for resizable frames 有什么解决办法吗? 最佳答
我是一名优秀的程序员,十分优秀!