gpt4 book ai didi

javascript - ReactJs - 加载跨域资源

转载 作者:行者123 更新时间:2023-12-04 01:20:57 25 4
gpt4 key购买 nike

我创建了一个 React 组件来从 url 加载 svg。它非常简单,使用 svg use 语法作为 sprite 表。下面是我的代码,我也使用 ES6 语法:

export class Icon extends React.Component {

render() {
var classes = "icon",
url = this.props.url,
definedClass = this.props.classes;

if (definedClass) {
classes = classes + ' ' + definedClass
}

return (
<svg
className={classes}
viewBox="0 0 35 35"
dangerouslySetInnerHTML={{__html:
"<use xlink:href='" + url + "'></use></svg>"}}>
</svg>
)
}
}

这在从同一域加载时工作正常,但是当我尝试将它与其他代码一起加载为不同域上的小部件时,我遇到了这个错误。

加载 URL 的不安全尝试 http://localhost:3123/assets/svg/star.svg来自带有 URL 的框架 http://localhost:8000/ .域、协议(protocol)和端口必须匹配。

有什么办法可以解决这个问题,或者这只是 React 中不可更改的默认行为?

最佳答案

作为旁注,您不能将 HTTP 内容与 HTTPS 混合使用(尽管它不适用于您的问题)

将以下行添加到 .htaccess 以允许 CORS。

# with AJAX withCredentials=false (cookies NOT sent)
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE"
Header always set Access-Control-Allow-Headers "X-Accept-Charset,X-Accept,Content-Type"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]

# with AJAX withCredentials=true (cookies sent, SSL allowed...)
SetEnvIfNoCase ORIGIN (.*) ORIGIN=$1
Header always set Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE"
Header always set Access-Control-Allow-Origin "%{ORIGIN}e"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Headers "X-Accept-Charset,X-Accept,Content-Type"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]

关于javascript - ReactJs - 加载跨域资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com