javascript - 为什么在反应中加载带有危险SetInnerHTML的图像返回403
问题描述
我正在使用dangerouslySetInnerHTML
这样的反应来呈现动态 html:
<div dangerouslySetInnerHTML={createMarkup(data)} />
function createMarkup(data) {
return { __html: data.content }
}
但是从 url 加载一些图像时,它返回 403 错误。然后我把url( https://img.ithome.com/newsuploadfiles/2021/6/b632b078-a6b4-4658-b253-3e4d81fcda26.jpg
)链接粘贴到浏览器直接打开,加载图片成功!!!为什么会这样?我应该怎么做才能避免 403 错误?
<p><img src="https://img.ithome.com/newsuploadfiles/2021/6/b632b078-a6b4-4658-b253-3e4d81fcda26.jpg" /></p><p>bababababababa</p>
这是文章详细信息的完整代码:
import React, { Component } from 'react'
import CustomBreadcrumb from '@/components/CustomBreadcrumb'
import { Layout, Divider, Row, Col, notification, Form } from 'antd'
import '@/style/view-style/table.scss'
import { withRouter } from 'react-router-dom'
import { getArticleDetail } from '../../../../../service/cruise/ArticleService'
import queryString from 'query-string'
import { formatTime } from '../../../../../api/StringUtil'
class ArticleDetail extends Component {
state = {
loading: false,
article: {}
}
enterLoading = () => {
this.setState({
loading: true
})
}
componentDidMount() {
let id = this.props.match.params.id
getArticleDetail(id)
}
componentWillUnmount() {
notification.destroy()
this.timer && clearTimeout(this.timer)
}
render() {
let data = this.props.article.articleDetail
if ((data && Object.keys(data).length === 0) || data === undefined) {
return <div>No Data</div>
}
function createMarkup(data) {
return { __html: data.content }
}
return (
<Layout className='animated fadeIn'>
<div>
<CustomBreadcrumb arr={['应用', 'Cruise', '文章', '详情']}></CustomBreadcrumb>
</div>
<Row>
<Col>
<div className='base-style'>
<h3 id='basic'>{data.title}</h3>
<Divider />
<div>作者:{data.author}</div>
<div>日期:{formatTime(data.pubTime)}</div>
<div dangerouslySetInnerHTML={createMarkup(data)} />
</div>
</Col>
</Row>
</Layout>
)
}
}
export default withRouter(Form.create()(ArticleDetail))
解决方案
推荐阅读
- ios - 从终端命令启动 ios ipa
- graphql - 如何在 Apollo 中制作 graphql 客户端?
- c# - 如何在虚拟助手中创建一个阶梯瀑布,其中的阶梯是在运行时生成的 AdaptiveCards?
- c# - 哈希更改校验和从 PC 转移到 MacO
- python - Dask 延迟最佳实践的批处理指令是如何工作的?
- java - 是否可以跨 2 个流应用 BiFunction
- gsutil - "gcloud init" 没问题,但是 gsutil 不能在 Mac 终端中工作,继续 "Retrying request"
- vim - 如何完成不区分大小写的缓冲区搜索和区分大小写的完成?
- objective-c - 从 AppDelegate 到哪里?如何返回上一个视图和访问实例
- powershell - 将一串 1 和 0 转换为十六进制