【发布时间】:2019-08-13 13:28:00
【问题描述】:
我在我的 Nginx 服务器上运行了一个非常简单的本地 PHP 路由器,它为来自我的 Android 应用程序的请求提供服务。方法调用通常遵循
https://example.com/lua/path/to/method
例如
https://example.com/lua/logerror/errormsg
https://example.com/lua/recordscore/scoredata
lua 位在很大程度上是历史性的 - 底层路由器实际上是 PHP。到目前为止,我已经能够使用以下 Nginx 配置块
location /lua
{
if (!-e $request_filename) {rewrite ^/(.*)$ /lua/index.php?$1 last;}
}
在我的应用中,这些请求以XMLHttpRequests 发出。
然而,最近对 Chrome 的升级——我的 Cordova/Android 应用程序使用的 Android 网络视图(从 Android 6 开始)几乎与 Chrome 获得更新同时更新——让苹果购物车感到不安。现在,当我通过chrome://inspect 调试我的应用程序时,我发现错误消息类似于
在“https://example.com/lua/logerror/Zooming”访问 XMLHttpRequest 来自原点“文件://”已被 CORS 策略阻止:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。
我还使用了较新的 fetch API,在该 API 中我可以通过配置获取来解决问题
{mode:'no-cors',cache:'no-cache',credentials:'omit'}
但是,将所有内容更改为使用 fetch 并不是一个简单的选择。
我想我可以通过将上面的 Nginx 配置块更改为来解决这个问题
location /lua
{
add_header Access-Control-Allow-Origin *;
if (!-e $request_filename) {rewrite ^/(.*)$ /lua/index.php?$1 last;}
}
但这并没有帮助。我对 Nginx 配置的了解不足以帮助我确定如何解决此问题。
【问题讨论】:
标签: javascript android cordova nginx cors