在模拟器,仿真器或物理电视设备上运行打包为.wgt文件的Tizen TV网络应用程序时,它将发出包含“ Origin:file://”标头的POST请求,但服务器会拒绝该请求。 GET请求不包含原始标头,并且可以正常工作。
该项目配置为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标头?
答案 0 :(得分:1)
不要忘记在config.xml中添加特权并允许域
<tizen:privilege name="http://tizen.org/privilege/internet"/>
<access origin="*" subdomains="true"></access>
答案 1 :(得分:1)
Here是MDN文档的一部分,其中指出某些标头(包括“ Origin”)完全由用户代理控制,并且无法由开发人员修改(您可以在this response中找到更多详细信息)。您需要考虑通过添加CORS规则(a tutorial here)
来更改尝试访问的服务器的配置。此外,我进行了更多研究,发现this article描述了一种使用代理工具解决类似问题的方法。如果您无法更改服务器配置,则本文可能对您有用。
答案 2 :(得分:0)
您无法更改。实际上,一些旧的Tizen电视会发送一个空的Origin。您的服务器应该以某种方式考虑到这一点,或者,如果您不控制服务器,请按照另一个答案中的建议使用代理。