【问题标题】:Android Jelly bean 4.2.2 - webview XMLHttpRequest cannot loadAndroid Jelly bean 4.2.2 - webview XMLHttpRequest 无法加载
【发布时间】:2017-08-04 15:20:49
【问题描述】:

在我的应用中,我使用的是WebView。我正在尝试调用无法继续我的请求的 POST 方法。我收到此错误:

XMLHttpRequest 无法加载 https://*****/support/create_ticket。 请求标头字段 Content-Type 不允许 访问控制允许标头。在空:1

这种情况只发生在配备 Jelley bean 4.2.2 的设备中,在所有其他操作系统中都可以正常工作

非常感谢您的帮助。

【问题讨论】:

    标签: android webview android-4.2-jelly-bean


    【解决方案1】:

    将此添加到请求标头:

    Map<String, String> extraHeaders=new HashMap<>();
    extraHeaders.put("Access-Control-Allow-Origin","*");
    extraHeaders.put("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");
    

    你可能也需要添加这个:

    extraHeaders.put("Access-Control-Allow-Methods","POST");//you add more:"GET, POST, PUT"
    

    --- 根据您的代码更新,调整如下:

    RestAPI.Groups = $resource('groups/:id', {
        id: '@id'
    }, {
        get: {
            method: "GET",
            KalseferPrivateAPI: true,
            interceptor: Interceptors.get
        },
        join: method: "POST",
        KalseferPrivateAPI: true,
        interceptor: Interceptors.post,
        headers: {
            'Access-Control-Allow-Origin:*',
            'Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept',
            'Access-Control-Allow-Methods:POST'
        },
        url: 'groups/join'
    }, addMember: {
        method: "POST",
        KalseferPrivateAPI: true,
        interceptor: Interceptors.post,
        headers: {
            'Access-Control-Allow-Origin:*',
            'Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept',
            'Access-Control-Allow-Methods:POST'
        },
        url: 'groups/:id/users/:users',
        params: {
            id: '@id',
            users: '@users'
        }
    }
    });
    

    我希望这可能会有所帮助,'。

    【讨论】:

    • 我想细化这个问题,我将 url 加载到 webview,在这个页面中我有一个按钮,点击它后,我们调用 java 脚本函数抛出错误: XMLHttpRequest 无法加载 https: //*****/支持/create_ticket。 Access-Control-Allow-Headers 不允许请求标头字段 Content-Type。在空:1。我不确定修复是否需要在 android 本机代码中。
    • 请提供您的javascript请求的代码。您需要将上面的映射添加到您的请求标头中。
    • 每个请求都持有一个header map.一组键值对。在您的情况下不会有所不同。如果您可以通过 Javascript 向我提供您的请求。我可以向您展示如何设置标题。因为我不知道它是 ajax 调用还是 XMLHttpRequest 调用。这就是我要求提供代码或更多信息的原因
    • 这是服务器中引发错误的函数,希望对您有所帮助:
      RestAPI.Groups = $resource( 'groups/:id',{id: '@id '}, {get: {method: "GET",KalseferPrivateAPI: true, 拦截器: Interceptors.get},join: 方法: "POST", KalseferPrivateAPI: true,interceptor: Interceptors.post,url: 'groups/join'} ,addMember:{方法:“POST”,KalseferPrivateAPI:true,拦截器:Interceptors.post,url:'groups/:id/users/:users',参数:{id:'@id',用户:'@users' } }});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多