如何在 Tizen Web 应用程序中修复 'Origin: file://'

How to fix 'Origin: file://' in Tizen web application

当 运行 Tizen TV web-app 打包为 .wgt 文件时,在模拟器、模拟器或物理电视设备上它会发出 POST 包含 'Origin: file://' 的请求header,被服务器拒绝。 GET 请求不包含来源 header 并按预期工作。

该项目配置为 tv-samsung-5.0 并包含以下相关配置行:

<?xml version="1.0" encoding="UTF-8"?> <widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="https://redacted.be" version="0.0.1" viewmodes="maximized"> <feature name="http://tizen.org/feature/network.internet"/> <tizen:profile name="tv-samsung"/> <tizen:allow-navigation>*.redacted.be</tizen:allow-navigation> <tizen:content-security-policy>default-src 'self'; connect-src 'self' https://*.youtube.com https://*.redacted.be; style-src 'self' 'unsafe-inline'; media-src https://*.youtube.com https://*.redacted.be blob: </tizen:content-security-policy> <tizen:setting screen-orientation="landscape" context-menu="enable" background-support="disable" encryption="disable" install-location="auto" hwkey-event="enable"/> <tizen:privilege name="http://tizen.org/privilege/internet"/> </widget>

该应用程序是使用 axios 网络库 react-native-web 构建的。

如何避免应用程序发送这个 Origin header?

不要忘记在您的 config.xml

中添加权限并允许域
<tizen:privilege name="http://tizen.org/privilege/internet"/>
<access origin="*" subdomains="true"></access>

Here is the part of MDN docs which states that some headers (including 'Origin') are in full control of user agent and cannot be modified by developer (you can find more details in this response). You need to consider changing the configuration of the server you are trying to reach by adding CORS rules (a tutorial here)

此外,我做了更多研究,发现 this article 描述了一种使用代理工具解决类似问题的方法。如果您无法更改服务器配置,也许这​​篇文章对您有用。

您无法更改此设置。实际上,一些较旧的 Tizen 电视会发送一个空的 Origin。您的服务器应该以某种方式考虑到这一点,或者如果您不控制服务器,请按照另一个答案中的建议使用代理。