Phi*_*l_t 1 javascript encode xmlhttprequest
(用于XML HTTP请求的JavaScript和用于执行SQL查询的PHP.)
我正在构建一个执行查询的Web应用程序.它使用XMLHTTP请求GET方法并将查询传递给执行它的PHP脚本.它工作正常,直到我( )在其中引入括号.
这是一个如何工作的例子:
function executeQry(){
qry = document.getElementByID('textarea').value;
qryHTTPRequest(encodeURI(qry));
//I've also tried encodeURIComponent(qry);
}
function xmlHTTPRequest(qry){
//fetches
urlFetch = "http://my.url.com/script.php?qry=" + qry;
}
Run Code Online (Sandbox Code Playgroud)
这是一个快速参考,我知道我的xmlhttp请求工作正常,因为它执行其他查询传递时需要做的事情,例如:
SELECT * FROM `tableName`
Run Code Online (Sandbox Code Playgroud)
工作正常,但当你尝试做类似的事情
CREATE TABLE `new_table`
AS (SELECT * FROM `old_table`)
Run Code Online (Sandbox Code Playgroud)
然后这就是它不会执行的时候,我得到了403错误,所以我认为这是一个()因为我甚至在PHP本身上尝试了相同的代码,而不必通过它并且它工作,所以必须有一个URL编码过程的问题对吗?如果这是问题,是否有一种编码这些字符的方法?我假设还有其他字符不能用encodeURI()方法编码encodeURIComponent().提前致谢!
Mik*_*uel 10
以下应该这样做:
urlFetch = "http://my.url.com/script.php?qry=" + encodeURIComponent(qry)
.replace(/\(/g, "%28").replace(/\)/g, "%29");
Run Code Online (Sandbox Code Playgroud)
括号在URI语法中是古怪的.许多编码器将它们视为特殊编码器,即使它们只出现在过时的 "标记"生产中.与普通的网络协议(http,https,mailto)它是安全的,它们编码为%28和%29,虽然Web服务器允许指定特殊含义给他们.您已经在使用encodeURI或encodeURIComponent已经假定URL转义序列是UTF-8.
来自RFC 3986:
Run Code Online (Sandbox Code Playgroud)sub-delims "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="...
Run Code Online (Sandbox Code Playgroud)obsolete rule translation mark "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")"
| 归档时间: |
|
| 查看次数: |
4978 次 |
| 最近记录: |