Вы можете использовать понимание списка:
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
У вас нет. Сервер, на который вы делаете запрос, должен внедрить CORS для предоставления JavaScript с вашего сайта. Ваш JavaScript не может предоставить себе разрешение на доступ к другому сайту.
Отвечено мной.
CORS угловой js + restEasy на POST
Ну, наконец, я пришел к этому обходному пути: причина, по которой он работал с IE, заключается в том, что IE отправляет непосредственно POST вместо первого запроса предполетного просить разрешения. Но я до сих пор не знаю, почему фильтр не смог управлять запросом OPTIONS и отправляет по умолчанию заголовки, которые не описаны в фильтре (похоже, это переопределение для этого только случая ... может быть, остальная вещь. .)
Итак, я создал путь OPTIONS в моей службе отдыха, который перезаписывает ответ и включает заголовки в ответ с использованием заголовка ответа
. Я все еще ищу чистый способ сделайте это, если кто-нибудь столкнулся с этим раньше.
У меня была аналогичная проблема, и для меня она сводилась к добавлению следующих HTTP-заголовков в ответ на принимающий конец:
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Вы можете не использовать *
на end, но только имя домена хоста, отправляющего данные. Как *.example.com
Но это возможно только при наличии доступа к конфигурации сервера.
header('Access-Control-Allow-Origin: *');
– davidkonrad
28 February 2016 в 00:32
Эта проблема возникает из-за политики модели безопасности веб-приложений, которая является политикой одинакового происхождения. В соответствии с политикой веб-браузер позволяет сценариям, содержащимся на первой веб-странице, получать доступ к данным на второй веб-странице, но только если обе веб-страницы имеют такой же происхождение. Это означает, что реквестер должен соответствовать точному хосту, протоколу и порту запрашивающего сайта.
У нас есть несколько вариантов, чтобы справиться с этой проблемой заголовка CORS.
var host = process.env.HOST || '0.0.0.0';
var port = process.env.PORT || 8080;
var cors_proxy = require('cors-anywhere');
cors_proxy.createServer({
originWhitelist: [], // Allow all origins
requireHeader: ['origin', 'x-requested-with'],
removeHeaders: ['cookie', 'cookie2']
}).listen(port, host, function() {
console.log('Running CORS Anywhere on ' + host + ':' + port);
});
<script>
. https://www.w3schools.com/js/js_json_jsonp.asp public static void main(String[] args) {
SpringApplication.run(SupplierServicesApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
} Если вы используете защиту от пружины ниже кода вместе с приведенным выше кодом. @Configuration @EnableWebSecurity public class SupplierSecurityConfig расширяет WebSecurityConfigurerAdapter {@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll().antMatchers("/**").authenticated().and()
.httpBasic();
}
} var result=[];
var app = angular.module('app', []);
app.controller('myCtrl', function ($scope, $http) {
var url="";// your request url
var request={};// your request parameters
var headers = {
// 'Authorization': 'Basic ' + btoa(username + ":" + password),
'Access-Control-Allow-Origin': true,
'Content-Type': 'application/json; charset=utf-8',
"X-Requested-With": "XMLHttpRequest"
}
$http.post(url, request, {
headers
})
.then(function Success(response) {
result.push(response.data);
$scope.Data = result;
},
function Error(response) {
result.push(response.data);
$scope.Data = result;
console.log(response.statusText + " " + response.status)
});
});
And also add following code in your WebApiConfig file
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
Попробуйте использовать службу ресурсов для использования flickr jsonp:
var MyApp = angular.module('MyApp', ['ng', 'ngResource']);
MyApp.factory('flickrPhotos', function ($resource) {
return $resource('http://api.flickr.com/services/feeds/photos_public.gne', { format: 'json', jsoncallback: 'JSON_CALLBACK' }, { 'load': { 'method': 'JSONP' } });
});
MyApp.directive('masonry', function ($parse) {
return {
restrict: 'AC',
link: function (scope, elem, attrs) {
elem.masonry({ itemSelector: '.masonry-item', columnWidth: $parse(attrs.masonry)(scope) });
}
};
});
MyApp.directive('masonryItem', function () {
return {
restrict: 'AC',
link: function (scope, elem, attrs) {
elem.imagesLoaded(function () {
elem.parents('.masonry').masonry('reload');
});
}
};
});
MyApp.controller('MasonryCtrl', function ($scope, flickrPhotos) {
$scope.photos = flickrPhotos.load({ tags: 'dogs' });
});
Шаблон:
<div class="masonry: 240;" ng-controller="MasonryCtrl">
<div class="masonry-item" ng-repeat="item in photos.items">
<img ng-src="{{ item.media.m }}" />
</div>
</div>