我试图使用
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!"