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
Javascript 用URL作为字符串的POST会被flask奇怪地解释_Javascript_Python_Flask - Fatal编程技术网

Javascript 用URL作为字符串的POST会被flask奇怪地解释

Javascript 用URL作为字符串的POST会被flask奇怪地解释,javascript,python,flask,Javascript,Python,Flask,我有一个使用跨源资源共享(CORS)AJAX请求的chrome扩展。它正在与烧瓶上的RESTAPI对话。它以字符串形式发布URL(如send()中所示)。然后我试图让flask将URL保存为字符串,但它对URL的解释非常奇怪。现在我正试图将一个名为“url”的局部变量保存为发布的url字符串 烧瓶代码: for items in request.form: url = items break print str(request.form) print str(url)

我有一个使用跨源资源共享(CORS)AJAX请求的chrome扩展。它正在与烧瓶上的RESTAPI对话。它以字符串形式发布URL(如send()中所示)。然后我试图让flask将URL保存为字符串,但它对URL的解释非常奇怪。现在我正试图将一个名为“url”的局部变量保存为发布的url字符串

烧瓶代码:

for items in request.form:
      url = items
      break
 print str(request.form)
 print str(url)
命令行输出:

ImmutableMultiDict([('redirect', u'true'), ('http://www.amazon.com/gp/product/B00KHWSB5M?gwSec', u'1'), ('ref_',
 u's9_simh_gw_p74_d15_i2')])
redirect
Javascript/Ajax:

  var xhr = new XMLHttpRequest();
  xhr.open('POST', url, true);
  xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  xhr.onload = function() {
    var text = xhr.responseText;
    var title = text; //getTitle(text);
    alert('Response from CORS request to ' + url + ': ' + title);

  };
  xhr.send("http://www.amazon.com/gp/product/B00KHWSB5M?gwSec=1&redirect=true&ref_=s9_simh_gw_p74_d15_i2");

堆栈溢出正在更改发送函数中的url。这里是:

我看到两个问题,都在客户端

首先,您要提交一个表单,它应该是一组键/值对。如果您需要发送url,更合理的做法是使用以下语法:

url=http://www.amazon.com/...
然后在烧瓶端,您可以通过以下方式获得此URL:

url = request.form['url']
但是在你准备这样做之前,你必须考虑第二个问题:性格逃避。
应用程序/x-www-form-urlencoded
内容类型要求对表单字段的值进行URL编码,以便服务器正确解释。以下是您在问题中指定的URL在编码时的外观:

http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB00KHWSB5M%3FgwSec%3D1%26redirect%3Dtrue%26ref_%3Ds9_simh_gw_p74_d15_i2
您可以使用该函数生成此编码

对于我提到的两个更改,您的
send()
调用如下所示:

xhr.send("url=" + encodeURIComponent("http://www.amazon.com/..."));