我试图使用
jquery做一个十字架请求,但是它一直被拒绝与消息
XMLHttpRequest cannot load http://… No ‘Access-Control-Allow-Origin’
header is present on the requested resource. Origin … is therefore
not allowed access.
我正在使用烧瓶,英雄和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); } }); }); });
在英雄方面我正在使用烧瓶,就像这样
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 hack allows examples to be run without installation. import os parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) os.sys.path.insert(0,parentdir) from flask.ext.cors import CORS app = Flask(__name__) app.config['MANDRILL_API_KEY'] = '...' app.config['MANDRILL_DEFAULT_FROM']= '...' app.config['QOLD_SUPPORT_EMAIL']='...' app.config['CORS_HEADERS'] = 'Content-Type' mandrill = Mandrill(app) cors = CORS(app) @app.route('/email/',methods=['POST']) def hello_world(): name=request.form['name'] email=request.form['email'] phone=request.form['phone'] description=request.form['description'] mandrill.send_email( from_email=email,from_name=name,to=[{'email': app.config['QOLD_SUPPORT_EMAIL']}],text="Phone="+phone+"\n\n"+description ) return '200 OK' if __name__ == '__main__': app.run()
解决方法
当我部署到Heroku时,这是对我有用的.
http://flask-cors.readthedocs.org/en/latest/
$pip install -U flask-cors
from flask import Flask from flask.ext.cors import CORS,cross_origin app = Flask(__name__) cors = CORS(app) app.config['CORS_HEADERS'] = 'Content-Type' @app.route("/") @cross_origin() def helloWorld(): return "Hello,cross-origin-world!"