相关疑难解决方法(0)

为什么我的JavaScript在所请求的资源上出现"No'Access-Control-Allow-Origin'标头"错误,当Postman没有?

我试图通过连接到Flask内置的RESTful API来使用JavaScript进行授权.但是,当我发出请求时,我收到以下错误:

XMLHttpRequest无法加载http:// myApiUrl/login.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.

我知道API或远程资源必须设置标题,但为什么在我通过Chrome扩展程序Postman发出请求时它可以正常工作?

这是请求代码:

$.ajax({
    type: "POST",
    dataType: 'text',
    url: api,
    username: 'user',
    password: 'pass',
    crossDomain : true,
    xhrFields: {
        withCredentials: true
    }
})
    .done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
        alert(textStatus);
    });
Run Code Online (Sandbox Code Playgroud)

javascript jquery same-origin-policy cors flask-restless

2320
推荐指数
29
解决办法
399万
查看次数

如何使用从ajax发布的数据?

我在从jquery ajax发布数据时遇到问题.

$('#clickme').click( function() {
    var data = save_input(); // data

    data['_sid'] = $survey_id;  // survey_id injected from flask
    data['_uip'] = $user_ip; // user_ip injected from flask, request.remote_addr

    $.ajax({
        type : "POST",
        url : "{{ url_for('mod.load_ajax') }}",
        data: JSON.stringify(data),
        contentType: 'application/json;charset=UTF-8',
        success: function(result) {
            console.log(result);
        }
    });

    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

从代码中,data是一个像javascript的对象

{
    'foo' : 'foo',
    'bar' : 'bar',
    'fo_' : 42,
}
Run Code Online (Sandbox Code Playgroud)

我想在烧瓶中做的是:

@mod.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
    if request.method == "POST":
        # load _sid and _uip from posted …
Run Code Online (Sandbox Code Playgroud)

python ajax jquery flask

59
推荐指数
2
解决办法
5万
查看次数

Javascript - 请求的资源上没有"Access-Control-Allow-Origin"标头

我需要通过XavascriptHttpRequest从javascript向python服务器发送数据.因为我使用的是localhost,所以我需要使用CORS.我正在使用Flask框架及其模块flask_cors.作为javascript我有这个:

    var xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("POST", "http://localhost:5000/signin", true);
    var params = "email=" + email + "&password=" + password;


    xmlhttp.onreadystatechange = function() {//Call a function when the state changes.
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(params);
Run Code Online (Sandbox Code Playgroud)

和python代码:

@app.route('/signin', methods=['POST'])
@cross_origin()
def sign_in():
    email = cgi.escape(request.values["email"])
    password = cgi.escape(request.values["password"])
Run Code Online (Sandbox Code Playgroud)

但当我执行它时,我收到此消息:

XMLHttpRequest无法加载localhost:5000/signin.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.

我该如何解决?我知道我需要使用一些"Access-Control-Allow-Origin"标头,但我不知道如何在此代码中实现它.顺便说一句,我需要使用纯JavaScript.

javascript python ajax cors flask

48
推荐指数
5
解决办法
6万
查看次数

如何在flask和heroku中启用CORS

我正在尝试使用jquery创建一个交叉原始请求,但它一直被消息拒绝

XMLHttpRequest无法加载http:// ...请求的资源上不存在"Access-Control-Allow-Origin"标头.原因......因此不允许访问.

我正在使用flask,heroku和jquery

客户端代码如下所示:

$(document).ready(function() {
    $('#submit_contact').click(function(e){
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: 'http://...',
            // data: [
            //      { name: "name", value: $('name').val()},
            //      { name: "email", value: $('email').val() },
            //      { name: "phone", value: $('phone').val()},
            //      { name: "description", value: $('desc').val()}
            //
            // ],
            data:"name=3&email=3&phone=3&description=3",
            crossDomain:true,
            success: function(msg) {
                alert(msg);
            }
        });
    }); 
});
Run Code Online (Sandbox Code Playgroud)

在heroku方面,我正在使用烧瓶,就像这样

from flask import Flask,request
from flask.ext.mandrill import Mandrill
try:
    from flask.ext.cors import CORS  # The typical way to import flask-cors
except ImportError:
    # Path …
Run Code Online (Sandbox Code Playgroud)

python jquery heroku cors flask

38
推荐指数
9
解决办法
6万
查看次数

Python Flask跨站点HTTP POST - 不适用于特定的允许来源

我正在尝试让Flask正确处理跨站点脚本.我从这里采取了跨域装饰器片段:http: //flask.pocoo.org/snippets/56/

在下面的代码中,我将装饰器片段和基本的烧瓶服务器放在一起.

我正在使用headers ='Content-Type'调用装饰器, 因为否则我得到"请求标头字段Access-Control-Allow-Headers不允许Content-Type".在浏览器中.

所以这是我的问题:按原样,下面的代码有效.但是,当我想限制只有这样的特定服务器时:

@crossdomain(origin='myserver.com', headers='Content-Type')
Run Code Online (Sandbox Code Playgroud)

我收到浏览器错误

" Access-Control-Allow-Origin不允许使用来源http://myserver.com."

除了origin ='*'之外,我无法使其工作.

有人有什么想法吗?

这是完整的代码:

from datetime import timedelta
from flask import make_response, request, current_app, Flask, jsonify
from functools import update_wrapper

def crossdomain(origin=None, methods=None, headers=None,
            max_age=21600, attach_to_all=True,
            automatic_options=True):
    if methods is not None:
        methods = ', '.join(sorted(x.upper() for x in methods))
    if headers is not None and not isinstance(headers, basestring):
        headers = ', '.join(x.upper() for x in headers)
    if not isinstance(origin, basestring):
        origin …
Run Code Online (Sandbox Code Playgroud)

python cross-site flask

10
推荐指数
1
解决办法
6233
查看次数

如何使用 Reactjs fetch 将 POST 数据发送到烧瓶

我对反应很陌生,我正在尝试掌握如何正确使用 fetch。我有这个 python 烧瓶路线,我试图从后端点击它,它看起来像这样:

@app.route('/api/v1', methods=['POST'])
def postTest():
    if not request.json:
        return "not a json post"
    return "json post succeeded"
Run Code Online (Sandbox Code Playgroud)

现在,当我与邮递员达成这一点时,我实际上能够获得成功的信息。

这是我的 reactjs fetch 的样子:

@app.route('/api/v1', methods=['POST'])
def postTest():
    if not request.json:
        return "not a json post"
    return "json post succeeded"
Run Code Online (Sandbox Code Playgroud)

每当我运行我的应用程序并尝试将这个函数读到控制台时,我得到的结果是这样的:

在此处输入图片说明

有人可以向我解释我做错了什么以及我能做些什么来解决这个问题。我将不胜感激。

javascript reactjs flask-restful

6
推荐指数
1
解决办法
5913
查看次数

当应用jwt auth包装时,Flask-cors包装器不工作.

我正在尝试使用Flask构建一个api站点,我正在使用它Flask-jwt来提供令牌授权.
如果我在Apache中执行CORS(使用mod_headers添加Allow-Access头,就像这样),authorizaiton工作正常

Header set Access-Control-Allow-Origin "*"

但是,我希望有更详细的访问控制,而不是只使用通配符.我看着flask-cors,这是一个很好的包装,检查原点并发送标题.现在我的路由看起来像这样(并且在apache设置中没有标头操作)

@app.route('/protected/place')
@cross_origin(headers=['Content-Type']) # Send Access-Control-Allow-Headers
@jwt_required()
def my_view_func():
    do something
Run Code Online (Sandbox Code Playgroud)

但是现在如果我从javascript发出http请求,我将无法从服务器获得Access-Control标头响应.(但是,如果我手动发布,比如做curl,我仍然可以看到交叉源插件工作和Access控件头)

当我删除@jwt_required包装器时,cross_origin包装器运行正常,它会给我响应.当应用jwt_required包装器时,无法从服务器看到响应.

我正在使用chrome调试我的客户端页面.BTW

我试图改变包装器的顺序,但它没有帮助.

是否可能,如果身份验证失败,cross_origin包装器将不会发送访问控制标头?

两个包装的源代码:
烧瓶-JWT:
https://github.com/mattupstate/flask-jwt/blob/master/flask_jwt/ 初始化的.py
烧瓶-CORS:
https://github.com/wcdolphin/flask -cors /斑点/主/ flask_cors.py

python authentication cross-domain flask

5
推荐指数
1
解决办法
2172
查看次数