|
@@ -145,6 +145,45 @@ def get_locale():
|
145
|
145
|
|
146
|
146
|
return locale
|
147
|
147
|
|
|
148
|
+@app.before_request
|
|
149
|
+def option_autoreply():
|
|
150
|
+ """ Always reply 200 on OPTIONS request """
|
|
151
|
+
|
|
152
|
+ if request.method == 'OPTIONS':
|
|
153
|
+ resp = app.make_default_options_response()
|
|
154
|
+
|
|
155
|
+ headers = None
|
|
156
|
+ if 'ACCESS_CONTROL_REQUEST_HEADERS' in request.headers:
|
|
157
|
+ headers = request.headers['ACCESS_CONTROL_REQUEST_HEADERS']
|
|
158
|
+
|
|
159
|
+ h = resp.headers
|
|
160
|
+
|
|
161
|
+ # Allow the origin which made the XHR
|
|
162
|
+ h['Access-Control-Allow-Origin'] = request.headers['Origin']
|
|
163
|
+ # Allow the actual method
|
|
164
|
+ h['Access-Control-Allow-Methods'] = request.headers['Access-Control-Request-Method']
|
|
165
|
+ # Allow for 10 seconds
|
|
166
|
+ h['Access-Control-Max-Age'] = "10"
|
|
167
|
+
|
|
168
|
+ # We also keep current headers
|
|
169
|
+ if headers is not None:
|
|
170
|
+ h['Access-Control-Allow-Headers'] = headers
|
|
171
|
+
|
|
172
|
+ return resp
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+@app.after_request
|
|
176
|
+def set_allow_origin(resp):
|
|
177
|
+ """ Set origin for GET, POST, PUT, DELETE requests """
|
|
178
|
+
|
|
179
|
+ h = resp.headers
|
|
180
|
+
|
|
181
|
+ # Allow crossdomain for other HTTP Verbs
|
|
182
|
+ if request.method != 'OPTIONS' and 'Origin' in request.headers:
|
|
183
|
+ h['Access-Control-Allow-Origin'] = request.headers['Origin']
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+ return resp
|
148
|
187
|
|
149
|
188
|
if __name__ == '__main__':
|
150
|
189
|
app.run(
|