我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝
XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问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); } }); }); });
在heroku方面,我正在使用flask,就像这样
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/ 通过运行-安装flask-cors- pip install -U flask-cors
pip install -U flask-cors
from flask import Flask from flask_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!"