tpb*_*afk 2 wordpress image node.js base64url
编辑 1
这与浏览器无关。如果我没有登录,就会发生这种情况。当我登录时,它运行良好。抱歉匆忙。
我知道这很奇怪并且没有任何意义也很难解释。
正如标题所说,浏览器会导致此问题,但我不确定。
所以我有一个图像服务,它从某个地方读取一些数据并通过读取的数据创建图像。然后它会做一些事情并以 base64 格式返回图像,以便我可以在我的网站中使用这些图像。当我在我的网站上打开一个页面时,这个过程就开始了。
问题是,如果我在 Safari 上打开页面,它可以正常工作,但今天我尝试在 Chrome 上打开页面,但图像没有加载。所以我检查了图像,发现没有data数据 URI 的开头属性。
让我用一个例子来解释;
这是我在创建 HTML 模板时的代码
presets += `<div class="icon"> <img src="data:image/png;base64,${icon}"></div>`
presets += `<p class="name">${name}</p>`
presets += `<div class="image"> <img src="data:image/png;base64,${image}"/></div>`
Run Code Online (Sandbox Code Playgroud)
我正在做一些事情,然后返回这些数据,在 postman 和 safari 上我得到了这个结果:
<div class="icon"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA{ ... }"></div>
Run Code Online (Sandbox Code Playgroud)
所以这很好。没有什么不对的。
但是当我在 Chrome 或 Opera 上打开页面时,我得到了这个;
<div class="icon"> <img src="image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA{ ... }"></div>
Run Code Online (Sandbox Code Playgroud)
看?没有data属性。我正在 Wordpress 中插入一个帖子,这是帖子的内容。为什么会这样?我希望我已经清楚地解释了我自己。
编辑 2
这是我用来插入帖子的功能
function programmatically_create_post($title, $content, $slug)
{
// Setup the author,
$author_id = 4;
// If the page doesn't already exist, then create it
if (!the_slug_exists($slug)) {
// Set the post ID so that we know the post was created successfully
wp_insert_post(
array(
'post_title' => $title,
'post_content' => $content,
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_author' => $author_id,
'post_name' => $slug,
'post_status' => 'publish',
'post_type' => 'post',
'page_template' => 'dynamic-post.php',
'post_category' => array(1,60)
)
);
// Redirect user to the post after the post created
wp_redirect(get_site_url() . '/blog/' . $slug);
exit();
// Otherwise, we'll stop
} else {
return;
} // end if
} // end programmatically_create_post
Run Code Online (Sandbox Code Playgroud)
好吧,这是一场噩梦,但我想我在挖掘了通过wp_insert_post. 请将其添加到您的functions.php文件中并检查它是否有效:
add_filter('kses_allowed_protocols', function ($protocols) {
$protocols[] = 'data';
return $protocols;
});
Run Code Online (Sandbox Code Playgroud)
基本上在 WordPress 内部有一个过滤器,它检查内容中任何 URL 的协议,并删除它不喜欢的任何 URL。默认情况下,支持的列表不支持数据协议。上面的函数只是将它添加到支持的协议列表中。
如果您是管理员,则此过滤器不会运行,这可能就是您仅在注销时才会看到此问题的原因。
| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |