我正在使用OneSignal用于客户端网站的网络推送消息传递。我已经关注了HTTPS setup 。我检查了几次,确保一切都正确完成。
- 所有文件均已上传到域的根目录
- 我已经设置了 list 并将所需的初始化代码放入页面标题中
当我加载页面时,我得到:
Fetch API cannot load https://onesignal.com/api/v1players.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://example.com' is therefore not allowed access.
The response had HTTP status code 404. If an opaque response serves your needs,
set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我直接联系了团队,但他们只是复制粘贴了部分文档。没有提供进一步的帮助。
使用 Chrome 版本 58/Windows 10
我做错了什么?
最佳答案
https://onesignal.com/api/v1players
响应显然不包含 Access-Control-Allow-Origin
响应 header ,因为它们不包含,您的浏览器会阻止您的前端 JavaScript 代码访问响应。
您无法对自己的前端 JavaScript 代码或后端配置设置进行任何更改,从而使您的前端 JavaScript 代码能够按照您尝试直接向 https://onesignal.com/发出请求的方式进行请求api/v1players
并成功获取响应。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS更详细地解释了,但其要点是,对于 CORS,发送请求的服务器必须配置为发送 Access-Control-Allow-Origin
响应 header 。
无论如何https://documentation.onesignal.com/docs/web-push-sdk-setup-https有官方文档解释了他们支持的 SDK,这显然需要你做更多类似这样的事情:
<head>
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
var OneSignal = window.OneSignal || [];
OneSignal.push(["init", {
appId: "YOUR_APP_ID",
autoRegister: false,
notifyButton: {
enable: true /* Set to false to hide */
}
}]);
</script>
</head>
关于javascript - 使用 OneSignal 设置无 Access-Control-Allow-Origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44532182/