Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决ajax数据编码中的斜杠查询问题?_Javascript_Java_Ajax_Rest_Query String - Fatal编程技术网

Javascript 如何解决ajax数据编码中的斜杠查询问题?

Javascript 如何解决ajax数据编码中的斜杠查询问题?,javascript,java,ajax,rest,query-string,Javascript,Java,Ajax,Rest,Query String,我尝试在jquery中使用ajax发送GET方法, 当数据具有特定的字符串或字符时会出现问题 我想在jquery查询中发送完整的uri路径 我试着对这些废话进行编码或解码,但真的不起作用 my jsp file ==================================================================================== $("#kakaoLogin").click(function() { var logi

我尝试在jquery中使用ajax发送GET方法, 当数据具有特定的字符串或字符时会出现问题

我想在jquery查询中发送完整的uri路径

我试着对这些废话进行编码或解码,但真的不起作用


my jsp file
====================================================================================

    $("#kakaoLogin").click(function() {

        var loginPage = "${login_page}";
        var urlStr = encodeURI("${login_page}");

        console.log(loginPage);
        console.log(urlStr);

        $.ajax({
            url: "${request_url}",
            data: { 
                client_id     : "${client_id}",
                login_page    : loginPage, // problem line
                response_type : "${response_type}"          
            },  
            method: "GET",   
            dataType: "json" 
        });

结果与我的谷歌devtool控制台

(索引):20

(索引):21

jquery.min.js:5 GET…&login\u page=http%3A%2F%2Flocalhost%3A8000%2Flogin&response\u type=code 400(请求错误)


如何修复该死的问题?

我怀疑这实际上与查询字符串编码有关。斜杠应该在querystring中编码/转义,因此您应该希望当前行为继续,而不是更改。如果签出其中一个中使用的重定向路径,则它们将对查询字符串进行完全编码

这些更可能是您的问题: A) 这似乎不是正确的端点(您正在尝试访问POST端点以刷新令牌)。尝试登录并获取用户令牌的端点是GET
/oauth/authorize
。看

B) 即使这是正确的端点,也应该是
redirect\u uri
,而不是
login\u page

C) 如果您确实是第一次尝试授权用户,OAuth流将要求在新选项卡或弹出窗口中实际打开登录url(
/OAuth/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code
),因为如果用户未登录Kakao,它需要将它们重定向到登录页面,然后才能批准/创建身份验证令牌。您可以在上看到此功能



我强烈建议阅读REST API文档和/或签出-它大大简化了身份验证过程,只需几行代码即可创建登录按钮。

怀疑您正在向未启用CORS的API发出oauth令牌请求,并且应该从您的服务器执行此操作。他们可能不想让你把你的证书暴露在public@charlietfl谢谢你的建议。我明白你说的。现在我知道我应该在控制器上编写代码,而不是JSP。谢谢你的建议。