无需在服务端语言上添加跨源代码。可以解决 Angular 7 与 Java API 或 Laravel (PHP) 的跨源问题。
无需添加以下代码。
对于 Java:
public class CORSFilter extends OncePerRequestFilter {
private static final Log LOG = LogFactory.getLog(CORSFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.addHeader("Access-Control-Allow-Origin", "*");
if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
LOG.trace("Sending Header....");
// CORS "pre-flight" request
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
// response.addHeader("Access-Control-Allow-Headers", "Authorization");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "1");
}
filterChain.doFilter(request, response);
}
}
对于 Laravel:
namespace App\Http\Middleware;
use Closure;
class Cors
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE');
}
}
最佳答案
来自 CORS documentation
A web application executes a cross-origin HTTP request when it requests a resource that has a different origin (domain, protocol, and port) than its own origin.
因此,如果您确实不想在 API 服务器上设置 CORS header ,则需要确保 API 服务器与您的 Angular 网站具有相同的协议(protocol)、主机和域。
否则,如果只是出于开发/测试目的,您可以尝试使用 Angular 的 proxy server
关于java - 在服务端不添加跨源代码如何解决跨源问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56884050/